如何在路由里取消layout的布局?

来源:6-2 首页 - 信息列表 - 全部产品

许愿瓶啊

2017-12-01

比如我有一个子路由有一个不同的头部导航,我需要取消默认的layout,是通过在子路由里的created阶段通过bus发送一个事件, layout页面接收这个事件,来改变显示?  这样能行吗? 另外路由的切换会触发生命周期的钩子吗?希望老师给我一个答案

写回答

1回答

fishenal

2017-12-04

你这个做法逻辑太复杂了,如果有几种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`
  }
}


1
0

最容易上手的Vue2.0入门实战教程

快速入门Vue2.0,组件化开发一个数字产品电商平台

3966 学习 · 999 问题

查看课程