【发布时间】:2019-09-06 22:45:29
【问题描述】:
我迫切希望实现一个导航守卫,如果项目不存在,它会根据路由参数中提供的 ID 阻止用户访问项目页面。
在 Vue-Router 指南中说:
next(false):中止当前导航。如果浏览器 URL 被更改(由用户手动或通过后退按钮),它将被重置为 from 路由。
但在我的组件中,使用 next(false) 不会阻止路由更改或组件渲染。它甚至不会像文档中承诺的那样导航回来。
beforeRouteEnter(to, from, next) {
next(false)
ajaxcall$.subscribe(data => next(vm => vm.setData(data)))
我本来希望明显的next(false) 能够工作并阻止组件和路由呈现,但没有。 ajax 调用并设置数据。
【问题讨论】:
-
您应该添加一个
return语句以避免执行以下表达式(即return next(false))。 -
我认为
next是一个回调。我不认为回调应该是返回值。它会破坏事物。 -
返回哪个值(或者是否返回一个值)并不重要。关键是你应该在回调调用之后立即
return。
标签: vuejs2 vue-router