Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vue路由器导航保护:超过最大调用堆栈大小?_Javascript_Vue.js_Vue Router - Fatal编程技术网

Javascript Vue路由器导航保护:超过最大调用堆栈大小?

Javascript Vue路由器导航保护:超过最大调用堆栈大小?,javascript,vue.js,vue-router,Javascript,Vue.js,Vue Router,在尝试下面的代码时,我经常遇到超过最大堆栈大小的问题,它在每条路由上使用vue路由器导航保护: import state from "../vuex-store/state.js"; import Editor from "../views/Editor"; const routes = [ { path: "/editor", component: Editor, beforeEnter: (to, from, next) => {

在尝试下面的代码时,我经常遇到超过最大堆栈大小的问题,它在每条路由上使用vue路由器导航保护:

import state from "../vuex-store/state.js";
import Editor from "../views/Editor";
const routes = [
    {
        path: "/editor",
        component: Editor,
        beforeEnter: (to, from, next) => {
            if (state.isAuthorized) {
                if (from.path === "/editor") {
                    next(false);
                } else {
                    next("/editor");
                }
            } else {
                next(false);
            }
        }
    }
];

请帮我解释一下为什么会发生这种递归错误,以及我如何解决它?非常感谢

错误通过以下表达式发生:
next(/editor”)

如果您的语句是
true
,您将创建一个无限循环,因为它再次触发
beforeentert
-方法

要解决这个问题,只需更换

next("/editor");


它应该可以工作。

此代码的目的是什么?这条路线似乎永远也解决不了。它是从我的代码中提取出来的。我已经为这个问题附上了所有必要的代码。非常感谢你,它很有效。但我仍然有一个困惑:if条件(from.path=“/editor”)不会控制这个无限循环吗?如果from路径不是“/editor”,那么它通过“next(“/editor”)”语句进入“/editor”路径,“from”路径现在变成“/editor”,而“to”路径也是“/editor”,那么If条件应该控制这种情况,然后它应该执行“next(false);”语句,这将取消导航?为什么这不起作用呢?还有另一个问题。。。我知道下一步(false)是取消当前导航,下一步(“/editor”)是转到路径“/editor”。但是next()的确切含义是什么?官方文件上写着“下一个():移动到管道中的下一个钩子。如果没有留下钩子,导航将被确认。”这里的“下一个钩子”是什么意思?此外,“导航已确认”,在本例中是否意味着它将导航确认到“/编辑器”?如果是,那么它将进入路径“/编辑器”,为什么这次它不会触发无限循环?非常感谢!!不客气:)。不,它不控制无限循环,因为它从未进入路径,因此,
from
从未设置为“/editor”。您可以通过
console.log(from)
简单地检查这一点,您将看到
path
始终是您来自的路径指向下一个钩子。因为您尝试输入“/editor”-
路径
这似乎是下一个钩子,您不必说
next(“/editor)”
。希望这对你有帮助。
next();