1つのレデューサーに対して複数のアクションをディスパッチする場合は、 showの方が良いかもしれません。提供された例で単一レデューサーに対して複数のアクションを順番にディスパッチしても、接続されたコンポーネントの状態の変化は反映されません。
いくつかの注意は:
App
コンポーネントは、それがredirectPath
小道具だの更新の歴史を反映しています。null
となると、no redirect
という文字列が履歴に追加されます。- アクションに応じて、平方だけを返します。または
null
です。 - ボタンを押すことにより、
Do redirect
の両方の操作(SET_REDIRECT
とCLEAR_REDIRECT
)が変更された状態をAppContainer
コンポーネントに提供すると期待しています。しかし、最新のもの(CLEAR_REDIRECT
)だけがnull
値のレンダリングメソッドをトリガーします。 - これらのアクションをディスパッチする間にわずかな遅延が加えられると、両方ともコンポーネントのレンダリングをトリガーします。
Do redirect with delay
ボタンを押すと確認できます。
私はアクションをディスパッチするときsetTimeout
を使用せずにコンポーネントの更新をトリガする状態(SET_REDIRECT
とCLEAR_REDIRECT
アクションによって提供される)の両方の変化を期待します。
ミドルウェアからCLEAR_REDIRECT
のディスパッチを移動させたところ、SET_REDIRECT
が得られましたが、同じ結果になりました。
何とか予期した動作に到達できますか?
私はそれがreduxの問題だと思ったので、最初に私はreduxに問題を投稿しましたが、@jimbollaは主に反応の設計によるものだと私に説明しました。
reduxチームメンバーhttps://github.com/reactjs/redux/issues/2532の元の問題とコメントを参考にしてください。
'あなたはcomponentWillReceiveProps'を使用できます これは正しいポイントです。私もそれに来ました。 – likerRr