如何在路由里取消layout的布局?
来源:6-2 首页 - 信息列表 - 全部产品

许愿瓶啊
2017-12-01
比如我有一个子路由有一个不同的头部导航,我需要取消默认的layout,是通过在子路由里的created阶段通过bus发送一个事件, layout页面接收这个事件,来改变显示? 这样能行吗? 另外路由的切换会触发生命周期的钩子吗?希望老师给我一个答案
写回答
1回答
-
你这个做法逻辑太复杂了,如果有几种layout,就写几个layout模板,new的时候调一个空的App组件,layout根据页面调不同的,layout可以做一个动态组件,componnt :is 这种,Layout是一个变量动态切换。
路由的钩子,别用组件的钩子,用这个:
https://router.vuejs.org/zh-cn/advanced/navigation-guards.html
const Foo = { template: `...`, beforeRouteEnter (to, from, next) { // 在渲染该组件的对应路由被 confirm 前调用 // 不!能!获取组件实例 `this` // 因为当守卫执行前,组件实例还没被创建 }, beforeRouteUpdate (to, from, next) { // 在当前路由改变,但是该组件被复用时调用 // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候, // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。 // 可以访问组件实例 `this` }, beforeRouteLeave (to, from, next) { // 导航离开该组件的对应路由时调用 // 可以访问组件实例 `this` } }
10
相似问题