LocalStorageにReduxのStateを保存してパフォーマンス改善する方法もあるよ JS日報 2017/11/13
上記記事のCaching with LocalStorage
の章で紹介されているテクニックが良い感じでした。
- ロード時にLocalStorageに保存済みのStateがあればそれをロード
- LocalStorageへ保存しているStoreを更新するメソッドを作成し、
store.subscribe()
しておくことにより、Storeが変更されたタイミングでLocalStorageのStateを自動更新
という仕組みを作り、初期表示時のデータ取得が完了するまでのタイムラグを軽減する(何も表示されない時間?)らしいです。
これは長いテキスト入力ボックスなどでうっかりブラウザを閉じてしまった時の為に入力内容を保存するなどちょっとした操作データの状態を素早く復元するのにとても役立ちそうです。
パフォーマンス改善とか操作状態復元といった文脈を抜きにしても
Storeでアプリケーションの状態を制御する
コンセプトのReduxとLocalStorageの相性が根本的に良い気がしています。
Reduxを使う場合はなるべく
Storeでアプリケーションの状態を表現出来る = Storeはjson形式 = あらゆる場所に保存、再現が容易
という特性を生かしたアプリケーションを作りたいですね。
追記 2017/11/15
本記事のやりたいことをそのまま提供してくれているredux-persistというライブラリがあるようです。
@akamecoさんありがとうございました!
そのあたりはredux-persistを使うといい感じです。アダプターでlocalStorageやIndexedDBに保存できます(v5になってからは触ってないのでちょっと最新のは追えてないですが) https://t.co/5Z4iF6M7Kj
— あかめ@無職.js (@akameco) 2017年11月13日