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 25 Vue.js
Vue项目如何引入bootstrap、elementUI、echarts
Nov 26 Vue.js
在vue中使用inheritAttrs实现组件的扩展性介绍
Dec 07 Vue.js
vue实现简易计算器功能
Jan 20 Vue.js
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 Vue.js
vue-cli中实现响应式布局的方法
Mar 02 Vue.js
VUE实现吸底按钮
Mar 04 Vue.js
手写Vue2.0 数据劫持的示例
Mar 04 Vue.js
关于Vue Router的10条高级技巧总结
May 06 Vue.js
如何理解Vue前后端数据交互与显示
May 10 Vue.js
Element-ui Layout布局(Row和Col组件)的实现
Dec 06 Vue.js
三种方式清除vue路由跳转router-link的历史记录
Apr 10 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+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
浅谈php调用python文件
2019/03/29 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
什么是json和jsonp,jQuery json实例详详细说明
2012/12/11 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
python模拟Django框架实例
2016/05/17 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python调用C语言的方法【基于ctypes模块】
2018/01/22 Python
pandas对指定列进行填充的方法
2018/04/11 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
2020/04/20 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
ET Mall东森购物网:东森严选
2017/03/06 全球购物
UNDONE手表官网:世界领先的定制手表品牌
2018/11/13 全球购物
平民服装店创业计划书
2014/01/17 职场文书
医务人员自我评价
2014/01/26 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
正规借条模板
2015/05/26 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL