-
Notifications
You must be signed in to change notification settings - Fork 0
5-2. redux: Store, Action, Action Creator, Reducer, Dispatch #35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
|
|
|
|
4.1 Reducerの引数
(★)配列に新しいデータを追加する時 |
まずは、[過去データの参照]
(★)oldListOfClaims引数の渡し方 |
[会計部門]
*bagOfMoney を100とここで定めた理由は、初期値を設定する必要があったからです。 |
[契約部門]
(★)ここでは、actionが 例
|
なお、Storeの役割はです。こことreducerをつなぐとことで、reduxのサイクルは完成します。
この2つを追加することで、APPのStoreが完結しました。あとは、Storeのメソッドを使えばデータを回せます。 //★今回は、
のように同じ名前を左右に使いました。
のように変更することもできますが、次に書く |
|
|
Uh oh!
There was an error while loading. Please reload this page.
Reduxとは
(動画ではないです、静止画です)
Fluxと類似点、相違点
類似点
・一方通行のデータ管理
・更新ロジックを一カ所にまとめている(FluxならStore, ReduxならReducer)
・アプリケーションが状態を直接変更することはなく、状態の変更はアクションですべておこなわれる
相違点
・Reduxにはdispatcherがない。(Reducerで担う)
・Reduxでは状態のオブジェクトに変更を行なうことはない。新しい状態オブジェクトを作る。
イメージをつかむ
↓↓↓このGIFとてもわかりやすいです↓↓↓
issueに貼り付けられなくて残念。
https://camo.githubusercontent.com/5aba89b6daab934631adffc1f301d17bb273268b/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6d656469612d702e736c69642e65732f75706c6f6164732f3336343831322f696d616765732f323438343535322f415243482d5265647578322d7265616c2e676966
語句の整理
Action Creator
const AAA = (引数) => { return( ***"ACTION"*** ); };
で記述されます。
Actionをリターンします。
Action
Action Creatorのreturn内に記載されるオブジェクトです。
{type: ******, paylpad(好きな値でOK): ********}
の2つの値が必須です。**・type ** : Actionの名前と考えていいと思います。大文字で書く、スペースは使わず
_
(アンダースコアでつなぐ)ぐらいのルールしかありません。のちに
Reducer
でAction
の種類の場合わけに使います。**・payload(好きな値でOK) **:のちに
Reducer
で必要とする値(変数/引数)をここに宣言します。nameだったり、amountだったり、heightだったりいろいろです。引数を使う時は、必ずAction Creatorのアロー関数で引数の宣言をしましょう。
なおpayload内を
{type: ******, paylpad: {****, ****}}
というふうに配列で書いても大丈夫。memo:勉強
Dispatch
日本語サイトでは「Dispatch:発火」と訳されていますが、「発信」「実行」と訳した方がいいと思います。
Dispatchは後述する
Storeメソッド
で行います。store.dispatch(*Action Creator名*('引数1', '引数2', ,,,,,,,,));
こうすると、Action がReducerに渡されてReducerの関数が実行されます。
Reducer
Actionが発信されると、自動で呼び出される関数部分です。
Stateの管理を行います。
各関数内で
if
だったりcase
でActionのtype
を判定します。判定結果がtrue
だったら return Aを、false
だったらreturn Bを返す といった書き方になります。なお、上記return A、return Bはいずれも**
state
に上書きする内容 **を書きます。Reducer内でやってはいけないことは、以下。
・入力値の変更
・API呼び出しやルーティングの移行などの副作用を伴う操作
・ピュアじゃない関数の呼び出し(例:Date.now() や Math.random())
Store
上の画像をみてもらうとなんとなくわかると思います。
dispatchでreducerを実行して、stateを変更管理する母体です。
storeには4つのメソッドがあります。
以下のサンプルで作成する物
保険会社(Insurance company)の請求とか、新規加入とかを扱う

ここでは「保険会社」の契約、請求、会計をベースとするAPPをつくります。つくりながらの流れをみながら学んだ方がわかりやすいと思います。
流れ:
ユーザがフォームで名前とお金を契約。
保険会社のリポジトリに名前がなければ新規契約としてデータを追加したり、解約の請求をされたらリポジトリから名前データを消したりします。
また、お金を請求されたら払ったり、契約だったらリポジトリにお金を追加したり という流れです。
The text was updated successfully, but these errors were encountered: