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 23 Vue.js
vue实现广告栏上下滚动效果
Nov 26 Vue.js
vue组件中节流函数的失效的原因和解决方法
Dec 02 Vue.js
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
Vue中ref和$refs的介绍以及使用方法示例
Jan 11 Vue.js
如何在 Vue 中使用 JSX
Feb 14 Vue.js
vue中三级导航的菜单权限控制
Mar 31 Vue.js
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
Vue+TypeScript中处理computed方式
Apr 02 Vue.js
vue如何实现关闭对话框后刷新列表
Apr 08 Vue.js
vue代码分块和懒加载非必要资源文件
Apr 11 Vue.js
Vue3实现简易音乐播放器组件
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的特殊设置
2006/10/09 PHP
PHP file_get_contents设置超时处理方法
2013/09/30 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
php简单生成随机数的方法
2015/07/30 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
javascript web页面刷新的方法收集
2009/07/02 Javascript
关于锚点跳转及jQuery下相关操作与插件
2012/10/01 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
[02:28]PWL开团时刻DAY3——Ink Ice与DeMonsTer之间的勾心斗角
2020/11/03 DOTA
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
Python序列循环移位的3种方法推荐
2018/04/09 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
解决pycharm同一目录下无法import其他文件
2020/02/12 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
金融行业务员的自我评价
2013/12/13 职场文书
管理学专业个人求职信范文
2013/12/13 职场文书
九年级化学教学反思
2014/01/28 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
毕业生写求职信的要点
2014/03/04 职场文书
医药营销个人求职信
2014/04/12 职场文书
关于SpringBoot 使用 Redis 分布式锁解决并发问题
2021/11/17 Redis