私はredux "アクション"の正しい概念を得るのに苦労しています。これは、ユーザーインターフェイスで何が起こったかを表す単純なメッセージに似ていますか、それとも新しい状態をすべて保持している太ったレコードですか?Reduxアクションクリエイターの役割で悩む
私が読んだReduxの例では、操作は常に操作のような単純なCRUDです。この例では、TODOを追加するときに、ビュー・ボタン・イベント・ハンドラー(またはTODOコントローラーと言う必要があります)は、すでに新しいTODOオブジェクトを含む新しいADD_TODOアクションを作成します。レジューサーは単にデータを挿入するだけです。レデューサーは「スマート」ではありません。
しかし、これにより、コントローラはアクションのデータを計算するための多くのロジックを持っています。シンプルなTODOアプリケーションでは問題ありませんが、より複雑なアプリケーションでは、これらのコントローラには多くの "ビジネスロジック"が含まれ、レデューサーには含まれません(後者は単にCRUD操作を実行するだけです)。
アクションを作成中にコントローラがクラッシュした場合、アクションはまったくログに記録されず、アクションログは重要なReduxセールスポイントIMHOの1つです。
アクションのデータを設定する複雑なコードでアクションを作成する際のガイドラインは何ですか?私はこれらのアクションクリエータの周りにtry/catchを入れ、別のログシステムを使うべきですか?複雑なアクションの作成を2つのアクションに分割する(または、エラーが発生した場合は3、非同期APIコールと全く同じように処理する)。
おかげで、 ピーター
これをとてもうまく書いていただきありがとうございます! 私はMVVMのバックグラウンドから来ているので、私は自分のレデューサーのほとんどのロジックを置く傾向があるからです。私の状態は、実際にはビューモデルに似ていて、モデルには似ていません。 IDとテーブルを使って作業しているIMHOが命令型プログラミングから多くの問題を引き起こしているので、まだ私の状態を正常化することはできませんでした:IDの不在、未定義のオブジェクトクラッシュなど... Haskellを数年使って、ツリーを使った作業はより自然な感じですが、Reduxでは落胆しているようです... – Ziriax
Reduxはオブジェクト参照ではなく、シリアライズ可能なデータとしてすべてを保存することを推奨します。 Reduxストアで正規化されたリレーショナルデータを管理するには、[Redux-ORM library](https://github.com/tommikaikkonen/redux-orm)を使用することを強くお勧めします。 "Practical Redux"シリーズは、Redux-ORMの使用について話し合い、サンプルアプリケーションでそれを実演しています。 Reduxでの正規化の詳細については、http://redux.js.org/docs/recipes/reducers/NormalizingStateShape.htmlおよびhttps://github.com/markerikson/react-redux-links/blob/master/reduxを参照してください。 -techniques.md#セレクタと正規化。 – markerikson