模式

vue-router中的模式选项主要在router实例化的时候进行定义的,如下

const router = new VueRouter({

mode: ‘history‘, // 两种类型history 还有 hash

routes: routes // 可以缩写成routes

})

有两种模式可供选择,history 和 hash,大致对比一下,

模式优点缺点

hash

使用简单、无需后台支持

在url中以hash形式存在,不会传到后台

history

地址明确,便于理解和后台处理

需要后台配合

hash模式对于后台来讲就是一个url,因为地址中的hash值是不会传到后台的,所以服务器端做一个根地址的映射就可以了。

history模式最终的路由都体现在url的pathname中,这部分是会传到服务器端的,因此需要服务端对每一个可能的path值都作相应的映射。或者采用模糊匹配的方式进行映射。

除此之外,history模式下,如果后端不是一对一的进行映射,而是模糊匹配的话,那么就要注意一下404的情况了。这个时候就需要在前端router中定义404页面了。

404路由的定义

由于router本身的匹配是从上到下的,如果在前面找到了匹配的路由,就跳转了。因此可以直接在最后添加404的路由,如下

let routerConfig = [{

path: ‘/pages‘,

component: App,

children: [{

path: ‘demo/step1/list‘,

component: coupon,

name: ‘coupon-list‘,

meta: {

title: ‘红包‘

}

}]

}, {

path: ‘*‘,

component: NotFound,

name: ‘notfound‘,

meta: {

title: ‘404-页面丢了‘

}

}]

在前面匹配不到的时候,* 代表全部,就是都指向404页面

路由钩子

路由钩子主要是给使用者在路由发生变化时进行一些特殊的处理而定义的,靠。。好拗口啊。

总体来讲vue里面提供了三大类钩子

1、全局钩子

2、某个路由独享的钩子

3、组件内钩子

全局钩子

顾名思义,全局钩子全局用,使用如下

const router = new VueRouter({

mode: ‘history‘,

base: __dirname,

routes: routerConfig

})

router.beforeEach((to, from, next) => {

document.title = to.meta.title || ‘demo‘

if (!to.query.url && from.query.url) {

to.query.url = from.query.url

}

next()

})

router.afterEach(route => {

})

某个路由独享钩子

就像说的一样,给某个路由单独使用的,本质上和后面的组件内钩子是一样的。都是特指的某个路由。不同的是,这里的一般定义在router当中,而不是在组件内。如下

const router = new VueRouter({

routes: [

{

path: ‘/foo‘,

component: Foo,

beforeEnter: (to, from, next) => {

// ...

},

beforeLeave: (to, from, next) => {

// ...

}

}

]

})

组件内钩子

首先看一下官方定义:

你可以在路由组件内直接定义以下路由导航钩子

beforeRouteEnter

beforeRouteUpdate (2.2 新增)

beforeRouteLeave

路由组件!路由组件!路由组件!重要的事情说三遍,大家一定要注意这里说的是“路由组件”,而路由组件!== 组件,路由组件!== 组件,路由组件!== 组件!之前一直没注意这点,然后在子组件里面傻乎乎的调钩子函数发现一直没用。。。

我们先来看一下什么是路由组件?

路由组件:直接定义在router中component处的组件

也就是说router中定义的入口vue文件之外的组件,是没有钩子函数的,也就不用说使用了。但是如果你使用了并不会报错,只是没反应。(本想画个图的,太懒了。。。自己理解理解吧,很好理解的)

这里再回头看下这个路由内钩子是怎么用的,很简单和data、method平级的方法

beforeRouteLeave(to, from, next) {

// ....

next()

},

beforeRouteEnter(to, from, next) {

// ....

next()

},

beforeRouteUpdate(to, from, next) {

// ....

next()

},

computed: {},

method: {}

三种路由钩子中都涉及到了三个参数,这里直接上官方介绍吧

to: Route: 即将要进入的目标 路由对象

from: Route: 当前导航正要离开的路由

next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。

next(false): 中断当前的导航。如果浏览器的 URL 改变了(可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。

next(‘/’) 或者 next({ path: ‘/’ }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。

vue路由跳转子组件_vue-router之路由钩子(组件内路由钩子必须在路由组件调用,子组件没用)...相关推荐

  1. vue 父组件调用子组件方法ref

    一.ref被用来给元素或子组件注册引用信息.引用信息将会注册在父组件的$refs对象上 vue中如果父组件想调用子组件的方法,可以在子组件中加上ref,然后通过this.$refs.ref.metho ...

  2. vue3.0 父组件调用子组件方法及获取子组件的值

    vue3.0 父组件调用子组件方法及获取子组件的值 通过对比2.0的获取及调用方式这里我们也可以借鉴2.0中的this.$refs去获取3.0和2.0的refs获取的方式有点大同小异,但是思路还是一样 ...

  3. 微信vue路由跳转兼容_vue使用感受(二)组件间跳转

    想要看代码高亮的可以去我的微信公众号(pearapple_2015)查看. 昨天我们聊了一下vue的组件间传值,今天来讨论下我遇到的第二个问题组件间跳转.在不使用前端框架的时候,如果我们要点击菜单跳转 ...

  4. vue 父循环怎么拿子循环中的值_Vue 父组件循环使用refs调用子组件方法出现undefined的问题...

    Vue 父组件循环使用refs调用子组件方法出现undefined的问题 1. 背景 最近前端项目遇到一个问题,我在父组件中使用了两个相同的子组件child,分别设置ref为add和update.其中 ...

  5. vue怎么调用子元素的方法_vue 父组件中调用子组件函数的方法

    vue 父组件中调用子组件函数的方法 在父组件中调用子组件的方法: 1.给子组件定义一个ref属性.eg:ref="childItem" 2.在子组件的methods中声明一个函数 ...

  6. vue 父组件调子组件方法_vue父组件调用子组件有哪些方法

    这次给大家带来vue父组件调用子组件有哪些方法,vue父组件调用子组件的注意事项有哪些,下面就是实战案例,一起来看一下. 情景: 父组件中引入上传附件的子组件:点击组件可以分别上传对应要求的图片,子组 ...

  7. vue 父组件 调用 子组件的方法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 我们都知道通过$ref可以获取到某个DOM,但是它也可以用来获取子组件的实例,调用子组件的方法 例: ...

  8. Vue父组件调用子组件的方法并传参的两种方式(用$refs.refName.functionName、window.function)

    如需了解儿子怎么控制老子的,传送门:https://s-z-q.blog.csdn.net/article/details/120094689 父组件father.vue <template&g ...

  9. vue父组件调用子组件的方法

    vue组件与组件通信有如下几种情况: 平行组件 父组件与子组件 子组件与父组件 它们之间通信有几种方法有: props 自定义事件 vuex 今天我们聊一下父组件调用子组件的一种方法 parent.v ...

  10. Vue中父组件调用子组件的方法

    场景 SpringBoot+Vue+Echarts实现选择时间范围内数据加载显示柱状图: SpringBoot+Vue+Echarts实现选择时间范围内数据加载显示柱状图_BADAO_LIUMANG_ ...

最新文章

  1. mysql 的 前导零_将前导零添加到MySQL列?
  2. 如何创建vss2005的数据库
  3. day 31 进程的其他方法 进程锁 进程队列
  4. Redis队列php多线程请求
  5. layui 下拉框空选项不显示_layui下select下拉框不显示或没有效果
  6. 阿里研究员:软件测试中的18个难题
  7. hbuilder设置html浏览器打开,HBuilder X如何配置浏览器操作配置方法
  8. php获取文件目录文件名,php获取路径中的文件名的方法有哪些
  9. 【SQL】MERGE
  10. mysql任务调度器_mysql存储过程和任务调度器
  11. Mysql设置允许外网访问
  12. OZ Report 오즈 리포트 개발
  13. PHP入门《PHP程序设计案例教程》-- PHP语法基础
  14. 计算机专业应届研究生面试自我介绍,计算机专业应届生面试自我介绍
  15. 香港windows云服务器下编译webrtc
  16. 7-5 判断某整数是正整数、负整数还是零 (6分)
  17. 数理统计(四)-方差分析及回归分析:总变差分解【总变差=方差+效应A平方和+效应B平方和+AB交互效应平方和】、线性回归模型、回归方程、残差、残差平方和、σ的无偏估计、多元线性回归模型、非线性回归模型
  18. php正则匹配斜线_PHP正则匹配反斜杠'\'和美元'$'的方法
  19. python画爱心原理_如何理解python一行代码实现一个爱心字符画?
  20. Unity学习制作Flappy Bird小游戏(超详细全教程,可发布到PC、Web、Android平台)

热门文章

  1. 关于halcon多区域挑选有关算法的自我理解(tuple_sort_index)
  2. 联想u盘linux安装教程,联想笔记本用U盘安装 winXP系统教程
  3. pythonnet下载_Python for .NET
  4. 只安装python_AI帮你写Python,安装只需5步,还能任你调教 | 开源
  5. 浅析拯救小矮人的 nlogn 算法及其证明
  6. 《程序是怎样跑起来的》第一章有感
  7. A*算法在最短路问题的应用及其使用举例
  8. 《梦断代码》阅读笔记02
  9. Microsoft SQL Server 2005 Service Pack 2 已经可以下载
  10. java任务poer_java-Powermock-模拟超级方法调用