redux、react、react-router、および reselect を使用しています。Header
との 2 つのコンポーネントを含む画面がありますBody
。Header
ID を選択するためのコンポーネントがあります。新しい ID が選択されると、新しいアクションがディスパッチされ、redux の状態で ID が更新されます。
その ID に基づいて、サーバーから要素をロードして状態に格納するための非同期 API 呼び出しが必要です。これにより、画面のレンダリングがトリガーされ、要素が に表示されますBody
。読み込まれた要素は、reselect を使用して状態から抽出されます。
実際のシナリオはそれよりも少し複雑です。Body
さまざまな API 呼び出しを持つさまざまなコンポーネントがあり、コンポーネントは 1 つしかないためHeader
です。しかし、それらは別の画面として扱うことができます。たとえば、次のようになります。
画面 1:
コンポーネント: Header
、BodyTypeA
; 呼び出す API:apiA
画面 2:
コンポーネント: Header
、BodyTypeB
; 呼び出す API:apiB
私の理解では、API 呼び出しは、新しい ID を状態に格納するときにレデューサーで行う必要があります。しかし、画面間で共有されるコンポーネントによってアクションがディスパッチされた場合、どの画面が表示され、どの API を呼び出すかをどのように判断するのでしょうか? どうにかBody
して ID の変更をサブスクライブし、画面内から API 呼び出しをトリガーすることはできますか? 画面タイプは、react-router によって決定されます。レデューサーはルーターにアクセスして、どの画面が表示されているかを判断できますか? このようなシナリオを処理するためのベスト プラクティスはありますか?