跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

JavaScript中Vue-router有哪些钩子及应用?

本篇文章给大家带来的内容是关于JavaScript中Vue-router有哪些钩子及应用?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 Vue-router有哪些钩子?使用场景? router的实现可以点这里 前面我们用大白话讲过什么是钩子,这里在重复一下,就是在什么什么之前,什么什么之后,英文叫hooks,专业点叫生命周期,装逼点可以叫守卫... vue-router中也存在钩子的概念,分为三步记忆 全局守卫 路由独享守卫 立即学习 “ Java免费学习笔记(深入) ”; 组件独享守卫 全局守卫 很好理解,全局守卫就是能监听到全局的router动作 router.beforeEach 路由前置时触发
const router = new VueRouter({ ... }) // to 要进入的目标路由对象 // from 当前的路由对象 // next resolve 这个钩子,next执行效果由next方法的参数决定 // next() 进入管道中的下一个钩子 // next(false) 中断当前导航 // next({path}) 当前导航会中断,跳转到指定path // next(error) 中断导航且错误传递给router.onErr回调 // 确保前置守卫要调用next,否然钩子不会进入下一个管道 router.beforeEach((to, from, next) => { // ... })
router.afterEach 路由后置时触发 使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件 如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Andr​​oid友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Andr​​oid应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更 下载
// 与前置守卫基本相同,不同是没有next参数 router.afterEach((to, from) => { // ... })
router.beforeResolve 跟router.beforeEach类似,在所有组件内守卫及异步路由组件解析后触发 路由独享守卫 参数及意义同全局守卫,只是定义的位置不同
const router = new VueRouter({ routes: [ { path: '/', component: Demo, beforeEnter: (to, from, next) => { // ... }, afterEnter: (to, from, next) => { // ... }, } ] })
组件独享守卫 组件内新一个守卫, beforeRouteUpdate,在组件可以被复用的情况下触发,如 /demo/:id, 在/demo/1 跳转/demo/2的时候,/demo 可以被复用,这时会触发beforeRouteUpdate
const Demo = { template: `...`, beforeRouteEnter (to, from, next) { ... }, // 在当前路由改变,但是该组件被复用时调用 beforeRouteUpdate (to, from, next) { ... }, beforeRouteLeave (to, from, next) { ... } }
注意在beforeRouteEnter前不能拿到当前组件的this,因为组件还有被创建,我们可以通过next(vm => {console.log(vm)}) 回传当前组件的this进行一些逻辑操作 使用场景 路由进入前最典型的可以做一些权限控制, 路由离开时清除或存储一些信息,任务等等 总结 vue-router中钩子分为全局的,局部的,以及组件三种形式, 他们都有前置守卫以及后置守卫, 其中组件的前置守卫不能拿到当前组件的this,因组件还没有被创建,可以通过next的参数进行回传this,前置守卫必须调用next方法,否则不会进入下一个管

相关文章