Closed liquor96 closed 1 year ago
问题描述 开发H5,使用了嵌套路由,子路由对应每个tabBar的tab,当点击tab时,使用this.$Router.push进入对应子路由,这个时候会触发父组件的created、mounted等生命周期钩子,直接用vue创建类似结构项目,切换子路由不会进created钩子,看了一圈文档都没找到在切换子路由时,如何阻止进入父组件的生命周期钩子函数?
复现步骤
// router.js import { RouterMount, createRouter } from 'uni-simple-router'; const router = createRouter({ platform: process.env.VUE_APP_PLATFORM, h5: { vueRouterDev: true, //完全使用vue-router开发 默认 false }, routes: [{ path: '/', name: 'router1', component: () => import('@/pages/index/index1.vue'), children: [{ path: 'a', name: 'router1', component: () => import('@/pages/index/index.vue'), children: [{ // 当 /route1/children1 匹配成功, // children1 会被渲染在 router1 的 <router-view> 中 path: 'route1/children1', name: 'children1', component: () => import('@/pages/tab/tab1.vue'), }, { // 当 /route1/:id 匹配成功, // children1 会被渲染在 router1 的 <router-view> 中 path: 'route1/:id', name: 'children2', component: () => import('@/pages/tab/tab2.vue'), } ] } ] }, ] }); //全局路由前置守卫 router.beforeEach((to, from, next) => { next(); }); // 全局路由后置守卫 router.afterEach((to, from) => { console.log('跳转结束') }) export { router, RouterMount }
路由如上
预期结果 切换子路由时,不触发父组件的生命周期钩子函数
实际结果 每次切换子路由,都会把父组件的生命周期钩子函数触发一遍
系统信息:
补充信息 无
http://gitlab.hafengkeji.com/HuZhiYuan/baoxin-demo demo地址
你需要一个根节点挂载点 在app.vue添加如下代码:
<template> <view> <router-view></router-view> </view> </template>
请关注 V3.0 版本,嵌套路由特性在 V3.0 版本中全平台可用
问题描述 开发H5,使用了嵌套路由,子路由对应每个tabBar的tab,当点击tab时,使用this.$Router.push进入对应子路由,这个时候会触发父组件的created、mounted等生命周期钩子,直接用vue创建类似结构项目,切换子路由不会进created钩子,看了一圈文档都没找到在切换子路由时,如何阻止进入父组件的生命周期钩子函数?
复现步骤
路由如上
预期结果 切换子路由时,不触发父组件的生命周期钩子函数
实际结果 每次切换子路由,都会把父组件的生命周期钩子函数触发一遍
系统信息:
补充信息 无