离开前如何获取Vue路由器?

林克斯

我有一个Vue组件,我需要body元素具有overflow:none,但其余页面应该具有overflow:auto。由于主体位于组件的外部,因此组件内部的作用域css不会应用于主体。我的解决方案是在进入页面时在路由中设置css,并在离开页面时撤消它。

{
  path: '/report',
  name: 'Report',
  component: Report,
  meta: { requiresAuth: true },
  beforeLeave: (to, from, next) => {
    console.log('before leave')
    $('body').css('overflow', 'auto');
    // next()
  },
  beforeEnter: (to, from, next) => {
    $('body').css('overflow', 'hidden');
    next()
  } 
},

触发beforeEnter函数,然后将CSS应用于主体。但是,beforeLeave函数不会触发,当我返回该站点的其余部分时,它的主体仍然具有溢出:隐藏。我只能按“后退”按钮离开页面,这不会触发beforeLeave函数吗?我还尝试像vue路由器文档中所说的那样将其更改为beforeRouteEnter和beforeRouteLeave,但这不起作用,并且beforeLeave也停止工作。我还尝试将vue-router和vue更新到最新版本。

Ohgodwhy

您可以使用以下beforeRouteLeave防护措施in-component

beforeRouteLeave(to, from, next) {
  $('body').css('overflow', 'auto');

  next()
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章