beforeRouteEnter无限循环

时间:2017-09-06 08:17:49

标签: javascript vue.js vue-router

我遇到了Vue Router的这个问题。

我的方案是允许首先加载/,从那里获取一些数据,然后它将转到/chat/:chatId路由并在那里呈现UI,其中:chatId param设置自我从API获得的数据。

我有/['chat', 'chat/:chatId']作为路由别名。

我有这个问题的内部保护。

beforeRouteEnter(to, from, next) {
  store.dispatch('fetchOpenSessions')
  .then(() => {
    const firstChat = Object.keys(store.state.chatsidebar.openSessions)[0];
    next({ name: 'chat', params: { chatId: firstChat } });
  });
},

但是这段代码无限循环,导致浏览器挂起。

我的问题是,如果我的初始路线是chat/:chatId/而没有进入无限循环,如何设置/chat

1 个答案:

答案 0 :(得分:1)

beforeRouteEnter(to, from, next) {
    store.dispatch('fetchOpenSessions')
        .then(() => {
            if(to.name == 'chat'){
                next();
            }else{
                const firstChat = Object.keys(store.state.chatsidebar.openSessions)[0];
                next({ name: 'chat', params: { chatId: firstChat } });
            }
        });
},