【概要】Reduxを始める
概要
-
UIの状態管理を行うライブラリ
-
状態:ログイン済、未ログインとか
-
-
Fluxの概念を拡張して作成
-
中規模~大規模アプリに向いている
基本構成
-
基本は以下の3つ
-
State:状態
-
View:画面
-
Actions:イベント
-
-
データフロー
-
初期状態のState(状態)に基づいてView(画面)が表示される
-
ViewからActions(ボタン押下等)が実行される
-
Actionの種類に基づいてStateが更新される
-
更新されたStateに基づいてViewが更新される
-
データフロー詳細
-
ユーザー入力からActionを作成
-
StoreへActionをdispatch(送信)
-
dispatchされたActionとStateをReducerへ渡す
-
Reducerが作成した新しいStateをStoreが保存
Reduxの3原則
-
Reduxの設計思想
-
下記より抜粋
1. Single source of truth
-
アプリ内でStoreは1つのみ
-
Global Stateは単独のオブジェクトとしてStoreに保存
-
どこからでも同じものが取得できる
-
2. State is read-only
-
Stateを直接変更しない
-
Stateの変更はActionをStoreへdispatchする方法のみ
-
状態の変更が一元化されることで競合が起きない
-
3. Mutations are written as pure functions
-
Reducerは純粋関数にする
-
関数の実行に副作用無し
-
関数の戻り値は入力パラメータ(State、Action)のみに依存(参照透過性)
-
非同期処理やランダム値の計算はしない
-
-
既存のStateオブジェクトを更新ではなく、新規にStateオブジェクトを作成する
用語集(Redux)
Action
-
「状態を変更する」という情報を持ったオブジェクト
-
typeプロパティ(定数)を必ず持つ
-
typeプロパティの命名規則は「domain/eventName」
-
domain:アクションが属する機能またはカテゴリ
-
eventName:発生した特定のイベント
-
ActionCreator
-
Actionを作成するメソッド
-
Actionを作るのみ
Store
-
State(状態)を保管している場所
-
アプリ内で1つだけ存在
-
Storeの機能は以下
-
Stateの保持
-
Stateへのアクセス機能(getState)
-
Stateの更新機能(dispatch)
-
リスナーの登録機能(subscribe)
-
Dispatch
-
Stateを更新する機能
-
StoreにActionを送信し、新規のStateを作成してStoreのStateを更新
-
State
-
アプリの状態
Reducer
-
ActionとStateを受け取り、新しいStateを返すメソッド
-
純粋関数として作る