1. Single source of truth(ソースは1つだけ)
アプリケーション全体の状態(state)はツリーの形で1つのオブジェクトで作られ、1つのストアに保存される
stateが保存しやすいので、ユニバーサルアプリケーションがつくりやすい
stateが一つだから、デバッグしやすい、開発しやすい
2. State is read-only(状態は読み取り専用)
状態を変更する手段は、変更内容をもったactionオブジェクトを発行して実行するだけ
ビューやコールバックが状態を直接変更させることはできない
変更は一つずつ順番に行なわれる
actionはオブジェクトなので、保存可能であり、テストしやすい
3. Mutations are written as pure functions(変更はすべてpureな関数で書かれる)
アクションがどのように状態を変更するかを「Reducer」で行う。
「Reducer」は状態とアクションを受けて、新しい状態を返す関数である。
現在のstateオブジェクトを変更することはせずに、新しいstateオブジェクトを作って返すというのがポイント。
開発するときは、最初はアプリケーションで一つのReducerを用意して、巨大化してきたらReducerを分割していく