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 element实现表格合并行数据
Nov 30 Vue.js
解决vue下载后台传过来的乱码流的问题
Dec 05 Vue.js
浅析vue中的nextTick
Dec 28 Vue.js
vue实现轮播图帧率播放
Jan 26 Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
深入理解Vue的数据响应式
May 15 Vue.js
如何理解Vue简单状态管理之store模式
May 15 Vue.js
Vue实现动态查询规则生成组件
May 27 Vue.js
springboot+VUE实现登录注册
May 27 Vue.js
在vue中import()语法不能传入变量的问题及解决
Apr 01 Vue.js
vue使用watch监听属性变化
Apr 30 Vue.js
vue实现简易音乐播放器
Aug 14 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中判断字符串是否全是中文或含有中文的实现代码
2011/09/16 PHP
php中serialize序列化与json性能测试的示例分析
2013/04/27 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
jQuery下的几个你可能没用过的功能
2010/08/29 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
JavaScript Uploadify文件上传实例
2017/02/28 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
Python算术运算符实例详解
2017/05/31 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
django 简单实现登录验证给你
2019/11/06 Python
Python解析json代码实例解析
2019/11/25 Python
导致python中import错误的原因是什么
2020/07/01 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
时尚孕妇装:Ingrid & Isabel
2019/05/08 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
高三自我鉴定范文
2013/10/19 职场文书
优秀实习自我鉴定
2013/12/04 职场文书
毕业生个人求职信范文分享
2014/01/05 职场文书
单位成立周年感言
2014/01/26 职场文书
全国道德模范事迹
2014/02/01 职场文书
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
基于docker安装zabbix的详细教程
2022/06/05 Servers
spring boot实现文件上传
2022/08/14 Java/Android