2017-09-06 27 views
0

Vue Routerでこの問題が発生しています。beforeRouteEnter無限ループ

私のシナリオは、/が最初にロードすることを許可し、そこからいくつかのデータをフェッチし、:chatIdのparamが、私はAPIから得たデータから設定された場合、それは/chat/:chatIdルートに行くと、そこにUIをレンダリングすることです。

私は、ルートエイリアスとして/['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の場合、私はどのようにしてchat/:chatIdを設定しますか?

答えて

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 } }); 
      } 
     }); 
}, 
+0

ワウ。それは理にかなっている。ご回答有難うございます。私は5分が過ぎたらそれを受け入れるでしょう! :) –

+0

@KaungMyatLwinようこそ – talkhabi