Vue-router编程式导航的两种实现代码


Posted in Vue.js onMarch 04, 2021

页面导航的两种方式

声明式导航:通过点击链接实现导航的方式,叫做声明式导航
例如:普通网页中的 <a></a> 链接 或 vue 中的 <router-link></router-link>
编程式导航:通过调用JavaScript形式的API实现导航的方式,叫做编程式导航
例如:普通网页中的 location.href

编程式导航基本用法

常用的编程式导航 API 如下:

this.$router.push(‘hash地址')

this.$router.go(n)

const User = {  
 		template: '<div><button @click="goRegister">跳转到注册页面</button></div>',  
  	methods: { 
  	 goRegister: function(){   
    // 用编程的方式控制路由跳转   
    	this.$router.push('/register'); 
  } 
  } 
 }

具体吗实现:

<!DOCTYPE html>
<html lang="en">
 <head>
 <meta charset="UTF-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 <meta http-equiv="X-UA-Compatible" content="ie=edge" />
 <title>Document</title>
 <!-- 导入 vue 文件 -->
 <!-- <script src="./lib/vue_2.5.22.js"></script> -->
 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 <!-- <script src="./lib/vue-router_3.0.2.js"></script> -->
 <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
 </head>
 <body>
 <!-- 被 vm 实例所控制的区域 -->
 <div id="app">
  <router-link to="/user/1">User1</router-link>
  <router-link to="/user/2">User2</router-link>
  <router-link :to="{ name: 'user', params: {id: 3} }">User3</router-link>
  <router-link to="/register">Register</router-link>

  <!-- 路由占位符 -->
  <router-view></router-view>
 </div>

 <script>
  const User = {
  props: ['id', 'uname', 'age'],
  template: `<div>
   <h1>User 组件 -- 用户id为: {{id}} -- 姓名为:{{uname}} -- 年龄为:{{age}}</h1>
   <button @click="goRegister">跳转到注册页面</button>
  </div>`,
  methods: {
   goRegister() {
   this.$router.push('/register')//编程式导航
   }
  },
  }

  const Register = {
  template: `<div>
   <h1>Register 组件</h1>
   <button @click="goBack">后退</button>
  </div>`,
  methods: {
   goBack() {
   this.$router.go(-1)
   }
  }
  }

  // 创建路由实例对象
  const router = new VueRouter({
  // 所有的路由规则
  routes: [
   { path: '/', redirect: '/user' },
   {
   // 命名路由
   name: 'user',
   path: '/user/:id',
   component: User,
   props: route => ({ uname: 'zs', age: 20, id: route.params.id })
   },
   { path: '/register', component: Register }
  ]
  })

  // 创建 vm 实例对象
  const vm = new Vue({
  // 指定控制的区域
  el: '#app',
  data: {},
  // 挂载路由实例对象
  // router: router
  router
  })
 </script>
 </body>
</html>

router.push() 方法的参数规则

// 字符串(路径名称) 
router.push('/home') 
// 对象 
router.push({ path: '/home' }) 
// 命名的路由(传递参数) 
router.push({ name: '/user', params: { userId: 123 }}) 
// 带查询参数,变成 /register?uname=lisi 
router.push({ path: '/register', query: { uname: 'lisi' }})

到此这篇关于Vue-router编程式导航的实现代码的文章就介绍到这了,更多相关Vue router编程式导航内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue在图片上传的时候压缩图片
Nov 18 Vue.js
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 Vue.js
vue3弹出层V3Popup实例详解
Jan 04 Vue.js
vue-resource 拦截器interceptors使用详解
Jan 18 Vue.js
Vue仿Bibibili首页的问题
Jan 21 Vue.js
vue-video-player 断点续播的实现
Feb 01 Vue.js
vue-router路由懒加载及实现的3种方式
Feb 28 Vue.js
vue 中 get / delete 传递数组参数方法
Mar 23 Vue.js
vue-element-admin项目导入和导出的实现
May 21 Vue.js
Vue如何清空对象
Mar 03 Vue.js
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 Vue.js
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 Vue.js
手写Vue2.0 数据劫持的示例
Mar 04 #Vue.js
vue3.0封装轮播图组件的步骤
Mar 04 #Vue.js
vue3.0 项目搭建和使用流程
Mar 04 #Vue.js
vue 数据双向绑定的实现方法
Mar 04 #Vue.js
vue3.0中使用element的完整步骤
Mar 04 #Vue.js
VUE实现吸底按钮
Mar 04 #Vue.js
vue实现可移动的悬浮按钮
Mar 04 #Vue.js
You might like
php的ZipArchive类用法实例
2014/10/20 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
2015/10/25 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
对angularJs中$sce服务安全显示html文本的实例
2018/09/30 Javascript
介绍Python中几个常用的类方法
2015/04/08 Python
python实现按行切分文本文件的方法
2016/04/18 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
在Python运行时动态查看进程内部信息的方法
2019/02/22 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
Python timeit模块的使用实践
2020/01/13 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
Python 忽略文件名编码的方法
2020/08/01 Python
python自动化测试三部曲之request+django实现接口测试
2020/10/07 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
UNIX文件类型
2013/08/29 面试题
工程业务员工作职责
2013/12/07 职场文书
2014办公室副主任四风对照检查材料思想汇报
2014/09/20 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
让世界充满爱观后感
2015/06/10 职场文书
蓝天保卫战收官在即 :15行业将开展环保分级评价
2019/07/19 职场文书
详细了解java监听器和过滤器
2021/07/09 Java/Android
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫