[解決済み] reduxのステートツリーをリフレッシュ時に持続させるには?
質問
Reduxドキュメントの第一原則は。
アプリケーション全体の状態は、1つのストア内のオブジェクトツリーに格納されます。
そして実際、私はすべての原則をよく理解していると思っていました。 しかし、アプリケーションとは何を意味するのか、今になって混乱しています。
アプリケーションが、ウェブサイト内のちょっとした複雑な部分の1つを意味し、1つのページだけで動作するのであれば、私は理解できます。しかし、アプリケーションが Web サイト全体を意味する場合はどうでしょうか。状態ツリーを保持するために LocalStorage またはクッキーか何かを使用する必要があるのでしょうか?しかし、ブラウザがLocalStorageをサポートしていない場合はどうすればよいのでしょうか?
開発者がどのようにステートツリーを保持するのか知りたいです! :)
どのように解決するのですか?
ブラウザの更新をまたいで redux の状態を持続させたい場合は、redux ミドルウェアを使用するのが最善です。このような場合は redux-persist と redux-storage というミドルウェアがあります。これらはどちらも redux の状態を保存し、自由に保存・読み込みができるようにするという同じタスクを達成しようとするものです。
--
編集
この質問を再検討してからしばらく経ちますが、他の(より多くのupvoted回答があるにもかかわらず)独自のソリューションをロールバックすることを奨励しているのを見て、私は再びこれに答えることを考えました。
この編集の時点では、両方のライブラリは過去 6 か月以内に更新されています。私のチームは数年前から本番環境で redux-persist を使用していますが、何の問題もありません。
単純な問題のように見えるかもしれませんが、独自のソリューションをロールバックすると、メンテナンスの負担になるだけでなく、バグやパフォーマンスの問題が発生することにすぐに気づくでしょう。最初に思い浮かぶ例は、次のとおりです。
-
JSON.stringify
そしてJSON.parse
は、必要ないときにパフォーマンスを低下させるだけでなく、reduxストアのような重要なコードで処理されないと、アプリケーションをクラッシュさせる可能性のあるエラーを投げます。 - (以下の回答で部分的に言及されています)。いつ、どのようにアプリの状態を保存して復元するかを見つけ出すことは、単純な問題ではありません。あまり頻繁に行うと、パフォーマンスが低下します。十分でない場合、または状態の間違った部分が永続化された場合、さらに多くのバグが発生する可能性があります。上記のライブラリは、そのアプローチにおいて実戦テスト済みであり、動作をカスタマイズするためのかなり確実な方法を提供しています。
- reduxの美しさの一部は(特にReactエコシステムにおいて)、複数の環境に配置することができることです。この編集の時点では、redux-persistには 15種類のストレージ実装 があり、その中には素晴らしい localForage ライブラリ をはじめ、React Native、Electron、Nodeのサポートがあります。
まとめると は 3kB minified + gzipped です。 (この編集の時点では) これは私のチームに自分で解決するように求める問題ではありません。
関連
-
[解決済み】Reactでclsxを使用する方法
-
[解決済み] reactでonloadを使うには?
-
[解決済み] error 'document' is not defined : eslint / React
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] React + TypeScript のエラーです。この呼び出しにマッチするオーバーロードがありません
-
[解決済み] ReactjsのEsLintの "react / jsx-props-no-spreading "エラーを無効化する。
-
[解決済み] Reduxのアクションをタイムアウトでディスパッチする方法とは?
-
[解決済み] Reduxストアの状態をリセットする方法とは?
-
[解決済み】Reduxアプリケーションでコード分割のためにreducersを動的にロードする方法は?
-
[解決済み] reduxとステートマシン(例:xstate)の実際の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Reactを使用したMapBoxのCSSが欠落している件
-
[解決済み] react-router-domを使用する際に「Function components cannot be given refs」を回避するにはどうすればよいですか?
-
[解決済み] useStateプロパティのフックにmap関数を使用する方法
-
[解決済み] material-ui-pickers KeyboardDatePicker をモーメントで使用するには?
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] react router dom v4でwebpack dev serverを構成する方法は?
-
[解決済み] React - _this2.SetStateは関数ではありません。
-
[解決済み] react.jsで複数のモジュールをエクスポートする
-
[解決済み] validateDOMNesting警告React
-
[解決済み] componentDidUpdate'メソッドはいつ使用するのですか?