ブログblog

Reduxについて

Writer: tokuyasu 更新日:2024/05/10

こんにちは、デジナーレ福岡オフィスの徳安です。
今回はReduxについての記事です。

 

Reduxとは??

Reduxとは、状態管理のためのライブラリで、Fluxアーキテクチャに則って設計されている。

単一方向しかデータが流れないのが特徴。

 

Reduxの主な要素

 

・Store

ReduxでのStateはstoreと呼ばれるオブジェクト内に保持されている。

・Action、Dispatch

ActionをDispatchする。
Reduxで状態変更を行う唯一の方法。

・Reducer

Dispatch(送信)されたActionを受け取るのがReducer
Reducerは「現在のState(currentState)」と「受け取ったAction」を受け取り、
新しいstateの結果を返却する純粋関数

Redux Toolkit(RTK)

Reduxの利用を簡単かつ効果的に設計されているのが
Redux Toolkitであり、公式からもRedux Toolkitの利用が推奨されている。

createSlice

reducerと状態に対応するアクションクリエーターとアクションタイプを自動的に生成する関数。
Reduxアプリケーションでは、アクションやリデューサーの定義が冗長になるが、
createSliceはこの冗長性を削減し、コードの記述を簡素化することができる。
createSliceは初期状態(initialState)、
reducer関数のオブジェクト、スライスの名前(sliceName)を受け取る。

 

 

*createSliceの戻り値
このようなオブジェクト形式で返却されるので、
createSliceを定義した時点で分割代入しておくと後々使いやすい。

configureStore

configureStoreでstoreの作成を行う。

combineReducersを使用して、複数のsliceReducerを管理することも可能

また、typeScriptを使用している場合は、ここでstoreの型定義までしておく。
使用する際に、自動補完が行われタイプミスなどを減らすことができる。

storeを参照できるようにする

AppをProviderで囲むことで、アプリケーション全体からStoreを利用することができるようになる。

storeの値を参照する

1. useSelectorをインポートし、グローバル管理しているcounter stateを取得する
2. 使用したい場所で表示する

storeの値を更新する

1. useDispatchをインポートし、store に紐付いた dispatch を取得する
2. 使用したい部分で(下記だとボタンを押下したアクション部分)
   createSliceで定義したActionをDispatchし、状態を更新する

まとめ

Redux ToolkitではActionとReducerが同じオブジェクト内で定義されるため、
記述が追いやすく、可読性が上がります。

また、Redux Toolkitを使った場合、
stateのイミュータブル性を気にすることなくコーディングができる為、
コードをより簡潔にすることができます。

今回は良く使用される関数やReact-Reduxフック を紹介しました。
記述が追いやすく、可読性が上がるので、
グローバル管理する際には、積極的にRedux Toolkitを使用していきたいと思いました。
ここまで読み進めていただきありがとうございます。