
状態は基本的に全てここで集中管理される。イメージとしては**「でっかいJSONの塊」**。
例: カウンタ
{ value: 0, }
規模が大きい場合は状態をカテゴリ別に分類するのが一般的である。
例: TwitterがもしReduxを使っていたら
`{ // セッションに関するもの session: { loggedIn: true, user: { id: "114514", screenName: "@mpyw", }, },
// 表示中のタイムラインに関するもの
timeline: {
type: "home",
statuses: [
{id: 1, screenName: "@mpyw", text: "hello"},
{id: 2, screenName: "@mpyw", text: "bye"},
],
},
// 通知に関するもの
notification: [],
}`
Storeおよびそこに存在するStateはとても神聖なものだ。Reactコンポーネントなんぞ下界のものに直接触らせるわけにはいかんのだ。ここに触れるためには,Actionという儀式を介さなければならない。要するにイベント・ドリブンと同じ概念だ。
Actionは基本的に以下のようなフォーマットを持つオブジェクトになる。
{ type: "アクションの種類を一意に識別できる文字列またはシンボル", payload: "アクションの実行に必要な任意のデータ", }
例えば,カウンタの値を2増加させたい場合,以下のようなオブジェクトになるだろう。頭に @@myapp/ とプレフィックスをつけたのは,他の人が書いたコードとの衝突を避けるためだ。