サブスクライブがアクションを取得できない理由次のことが良いアイデアかどうかわかりません
listeners.slice().forEach(listener => listener())
//to
listeners.slice().forEach(listener => listener(action))
サブスクライバーは、何が起こったかではなく、新しい状態に反応する必要があります。
これは、一貫性を確保するために重要です。
カスタムミドルウェアを使用して回避できます。
見てください:
https://github.com/rackt/redux/issues/347
https://github.com/rackt/redux/issues/580
私の場合、アクションは「ディスパッチ」が実行された後にサーバーに送信されます。 サーバーにはクライアントと同じReduxストアがあり、アクションはサーバーの状態を変更してクライアントの状態と同期します。
この場合、「サブスクライブリスナー」にアクションパラメータを指定すると便利です。
もちろん、これはミドルウェアを使用して実現できます。 ただし、これが「サブスクライブリスナー」のデフォルトの方法である方がよい場合があります。
サーバーとクライアントで同じReduxストアを準備することにより、サーバー側の状態操作はクライアントと同じになります。
この概念では、アクションは、サーバーを含む接続されているすべてのクライアント間で転送される状態シンクロナイザーです。
これはまさにミドルウェアのユースケースです。
最も参考になるコメント
サブスクライバーは、何が起こったかではなく、新しい状態に反応する必要があります。
これは、一貫性を確保するために重要です。
カスタムミドルウェアを使用して回避できます。
見てください:
https://github.com/rackt/redux/issues/347
https://github.com/rackt/redux/issues/580