2020-01-04
前回の記事の続きとなります。
Reduxに必要なライブラリのインストールを行います。
src/actions/index.js
actionを設定することで、適切な状態遷移を実行させる仕組みを提供します。
INCREMENT
とDECREMENT
はreducerでも利用するため、定数化しています。
状態を変更する責任を担うのがReducerの役割です。
src/reducer/index.js
export時に、combineReducersでReducerのファイルを指定することで、reducerのファイルを結合することができます。
src/reducer/count.js
第一引数にstateの初期値を設定しています。
また、action.typeによって処理を分岐するように記述しています。
src/index.js
const store = createStore(reducer);
で、storeを作成しています。
redux
、react-redux
、reducer/index.js
をインポートします。
また、AppコンポーネントをProviderコンポーネントでラップするように記述しています。
前回の記事Reactの基礎で実装したファイルをsrc/componentsフォルダに移動し、
stateの状態管理をReduxに置き換えていきます。
src/components/App.js
mapStateToPropsで、propsにstateをマッピングしています。
また同様に、mapDispatchToPropsでpropsから関数を呼び出すようにマッピングしています。
mapDispatchToPropsは、コメントアウトしている省略形の書き方でも同様に動作します。
最後にconnect関数で、stateとactionを関連付けることを行います。
コンポーネントとstateの状態管理の役割について、Appコンポーネントの外で行うことが可能となりました。
ReduxではStateを変更する際に、action→reducerという流れでstate(状態)の変更を行うようです。
このチュートリアルだとイマイチ良さを感じにくいですが、サイトが大きくなるにつれ、良さを実感できるんだろうなと思いました。