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 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
vue中defineProperty和Proxy的区别详解
Nov 30 Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
vue动态设置路由权限的主要思路
Jan 13 Vue.js
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
Feb 20 Vue.js
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 Vue.js
详解Vue router路由
Nov 20 Vue.js
vue实现滑动解锁功能
Mar 03 Vue.js
vue中使用mockjs配置和使用方式
Apr 06 Vue.js
vue代码分块和懒加载非必要资源文件
Apr 11 Vue.js
vue.js 使用原生js实现轮播图
Apr 26 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 header()函数使用说明
2008/07/10 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
JavaScript 动态创建VML的方法
2009/10/14 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
20条学习javascript的编程规范的建议
2014/11/28 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
JavaScript中的toUTCString()方法使用详解
2015/06/12 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
JS高级运动实例分析
2016/12/20 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
[04:16]DOTA2全国高校联赛16强抽签
2018/05/02 DOTA
Python中字符串的修改及传参详解
2016/11/30 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
python logging 日志的级别调整方式
2020/02/21 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
运动会广播稿80字
2014/01/23 职场文书
教师通用专业自荐书范文
2014/02/11 职场文书
入党个人总结范文
2015/03/02 职场文书
运动会加油稿30字
2015/07/21 职场文书
MySQL 原理与优化之Update 优化
2022/08/14 MySQL