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看了就会的8个小技巧
Jan 21 Vue.js
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
如何使用RoughViz可视化Vue.js中的草绘图表
Jan 30 Vue.js
开发一个封装iframe的vue组件
Mar 29 Vue.js
如何使用vue3打造一个物料库
May 08 Vue.js
详解vue中v-for的key唯一性
May 15 Vue.js
vue-element-admin项目导入和导出的实现
May 21 Vue.js
Vue CLI中模式与环境变量的深入详解
May 30 Vue.js
vue响应式原理与双向数据的深入解析
Jun 04 Vue.js
详细聊聊vue中组件的props属性
Nov 02 Vue.js
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
vue使用echarts实现折线图
Mar 21 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实现批量查询清除一句话后门的代码
2008/01/20 PHP
php实现webservice实例
2014/11/06 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
javascript中对变量类型的判断方法
2015/08/09 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
ES6扩展运算符的用途实例详解
2017/08/20 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
Python版微信红包分配算法
2015/05/04 Python
Python实现的最近最少使用算法
2015/07/10 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
在python 不同时区之间的差值与转换方法
2019/01/14 Python
django admin组件使用方法详解
2019/07/19 Python
python tkinter实现连连看游戏
2020/11/16 Python
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
HTML5地理定位实例
2014/10/15 HTML / CSS
露营世界:Camping World
2017/02/02 全球购物
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
音乐系毕业生自荐信
2013/10/27 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
大学生党员自我评价
2015/03/04 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
电子表的操作介绍说明书
2019/10/28 职场文书