2016-05-22 19 views
0

私はこの関数を呼び出すonEnterフック上に処理されていません。 replace関数は明確に定義されています。ただし、ルートは置き換えられません。機能置き換える反応するルータ正しく

ソースの質問hereのコア動機がわずかに異なります。しかし、彼らは一種の関連性がありますが、私はタイトルが異なっていることを望んでいました。

答えて

2

firebase.auth()は非同期であるので、あなたはonEnterにコールバックを定義する必要があります。

function (nextState, replace , callback /*** <== add this ***/) { 
    var unsubscribe = firebase.auth().onAuthStateChanged(function (user) { 
     if (!user) { 
      console.log('attempting to access a secure route'); 
      replace({ 
       pathname: '/login', 
       state: { nextPathname: nextState.location.pathname } 
      }) 
      console.log('should have called replace'); 
      callback(); /*** <=== call this to change route ***/ 
     } 
     unsubscribe(); 
    }); 
}; 

ドキュメントによると:https://github.com/ReactTraining/react-router/blob/master/docs/API.md#user-content-onenternextstate-replace-callback

関連する問題