ReactのuseEffectを使ってAPIからデータを取得して直ぐに参照しようとすると、値が取得されておらずにnullになっていることがあります。 その原因と対処方法について記載します。 useEf…
Redux ToolkitでStoreブラウザのlocalStorageにデータを保存して永続化する方法です。
localStorageへの読み書きはライブラリ「redux-localstorage-simple」を使用します。
目次
Redux Toolkitを使う場合は
Reducer, Actionなどをまとめて定義するため、通常のReduxにおける設定方法とは異なります。
middlewareの読み込みが可能なので、設定していきます。
redux-localstorage-simpleについて
StoreとReducerの定義時にlocalstorageへのsave, loadメソッドをセットするだけでlocalstorageへ読み書きしてくれるお手軽ライブラリです。
GitHub kilkelly/redux-localstorage-simple
https://github.com/kilkelly/redux-localstorage-simple
設定方法
redux-localstorage-simpleをインストール
パッケージマネージャからインストールします。
npm install --save redux-localstorage-simple
サンプル store.ts
※TypeScriptのサンプルなので、JavaScriptで使用する場合は型宣言を取り除く必要があります。
Redux Toolkitでstoreを生成するタイミングで読み込みます。
・preloadedStateでloadをセットする
・middlewareでsaveをセットする
・getDefaultMiddlewareで取得した上でsaveを結合する
・middlewareでsaveをセットする
・getDefaultMiddlewareで取得した上でsaveを結合する
import { configureStore } from '@reduxjs/toolkit'; import { plantFieldReducer, PlantFieldState, } from 'src/containers/PlantField/plantFieldSlice'; import { save, load } from 'redux-localstorage-simple'; export interface RootState { plantField: PlantFieldState; } export const store = configureStore({ reducer: { plantField: plantFieldReducer, }, preloadedState: load(), middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(save()), });
コメントを書く