2017-02-08 12 views
0

RectJSルータ:https://github.com/ReactTraining/react-routerReactJS Router - .push()、後で実行を停止する方法は?ここ

は、このページから 'プッシュ(pathOrLoc)' メソッドを利用:iOS版でhttps://github.com/ReactTraining/react-router/blob/master/docs/API.md

、私は次のようしている場合:

hashHistory.push({pathname:'/path1'}); 
hashHistory.push({pathname:'/path2'}); 

私がナビゲートされます'/ path1'を分割し、 '/ path2'に着陸します。

私は '/ path1'にプッシュされ、コードは2番目のパスを実行しないことが予想されます。どのように両方が実行されるのですか? 2番目の出来事を止める方法はありますか?

例として、私はモバイルURLを持っているコールバックを持っています。モバイルアプリを開き、ユーザーをそれぞれのページ( '/ path1')にプッシュし、そのコールバックをコード内にプッシュします。ユーザーがアプリケーション( '/ path2')を通常開くと、コールバック/パス1は/ path2によって上書きされます。

私のアプリでは、さまざまなコールバックによって3つ以上のパスの可能性がありますが、そのコードが決して実行されないことを期待しても、最後に呼び出されることになります。私は本当にたくさんの新しい関数/変数/ if文を、これらの呼び出しを避けるために投げたがっていません。

この動作を無効にする方法はありますか?

/path1に触れずに/ path1に着陸してください。

答えて

1

プッシュコールは即時リダイレクトを行わず、状態更新のように動作するため、コードは実行を続けます。

あなたがしたい場合は1等の他の試してください何か:

if (some_condition) { 
    hashHistory.push({pathname:'/path1'}); 
} else { 
    hashHistory.push({pathname:'/path2'}); 
} 
+0

おかげ。これを恐れて確認したかった! – user2138520

関連する問題