Vue路由器导航防护:是否超过最大呼叫堆栈大小?

时间:2019-08-20 23:09:23

标签: 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) => {
            if (state.isAuthorized) {
                if (from.path === "/editor") {
                    next(false);
                } else {
                    next("/editor");
                }
            } else {
                next(false);
            }
        }
    }
];

请帮我解释一下为什么发生此递归错误,我该如何解决?非常感谢!

1 个答案:

答案 0 :(得分:1)

error通过以下表达式出现:next("/editor");

如果您的语句为true,则将创建一个无限循环,因为它再次触发了beforeEnter-Method。

要解决此问题,只需替换

next("/editor");

next();

它应该可以工作。