redux
状態管理のためのアーキテクチャ,パターン.特定の実装やライブラリを指すものではない.
また,フロントエンドの文脈でよく使われるが,その文脈に限ったものでもない.
コンポーネントはストアから状態を取得し,レンダリングする.
何かイベントが発生し,状態を更新する必要がある場合,それをアクションとしてストアに通知する.ストアは状態とアクションをreducerに渡し,reducerは新しい状態を返す.
状態が更新されると,コンポーネントにそれが通知され,コンポーネントは新しい状態を元にレンダリングを行う.
この時,reducerは渡された状態を直接変更するのではなく,新しい状態を作って返す.
code:txt
+----------+ state, action --------------+
| | +--------> | |
| store | | reducer |
| | <-----------+ | |
+---+----+-+ new action +--------------+
^ |
| |
dispatch action | | subscribe state
| |
| v
+---+----+-------+
| component |
+----------------+
データが一方向に流れていくようなアーキテクチャで,The Elm Architectureから着想を得ているらしい.
そして、The Elm Architecture はElmでは「簡単」ですが、どんなフロントエンドプロジェクトにおいても便利なものです。実のところReduxのようなプロジェクトはThe Elm Architecture に着想を得て作られたものなので、このパターンの派生をすでに見たことがある人もいるかもしれません。