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+iview实现文件上传
Nov 17 Vue.js
springboot+vue实现文件上传下载
Nov 17 Vue.js
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
vue + el-form 实现的多层循环表单验证
Nov 25 Vue.js
实用的 vue tags 创建缓存导航的过程实现
Dec 03 Vue.js
在vue中使用inheritAttrs实现组件的扩展性介绍
Dec 07 Vue.js
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
详解Vue router路由
Nov 20 Vue.js
vue项目支付功能代码详解
Feb 18 Vue.js
Vue的过滤器你真了解吗
Feb 24 Vue.js
vue+iview实现手机号分段输入框
Mar 25 Vue.js
vue修饰符.capture和.self的区别
Apr 22 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
一个ubbcode的函数,速度很快.
2006/10/09 PHP
PHP 中检查或过滤IP地址的实现代码
2011/11/27 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
2013/03/06 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
pyqt和pyside开发图形化界面
2014/01/22 Python
python简单实现计算过期时间的方法
2015/06/09 Python
python处理html转义字符的方法详解
2016/07/01 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
Python实现获取邮箱内容并解析的方法示例
2018/06/16 Python
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
.net C#面试题
2012/08/28 面试题
临床医学专业求职信
2014/08/08 职场文书
民政局副局长民主生活会个人对照检查材料
2014/09/19 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
领导干部考核评语
2015/01/04 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
Java实现二分搜索树的示例代码
2022/03/17 Java/Android
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers