Redux で堅牢な状態管理を行うには、特定のシナリオでストアを初期状態にリセットすることが重要です。これにより、アプリケーションが正確で最新の情報を反映することが保証されます。
次の一連のイベントを考えてみましょう:
この状況では、キャッシュされたデータはユーザー A にリンクされたままとなり、データの不整合が発生する可能性があります。これに対処するには、最初のユーザーがログアウトするときに Redux ストアを初期状態にリセットする必要があります。
効果的なアプローチの 1 つは、アプリケーションのルート リデューサーを変更することです。ルート リデューサーはすべてのアクションを処理する責任があるため、ログアウト アクションなどの特定のアクションを受信したときに初期状態に戻るように指示できます。
const appReducer = combineReducers({ /* Your application's top-level reducers */ }); const rootReducer = (state, action) => { return appReducer(state, action); };
ただし、ルート リデューサーをリセットしたいと考えています。ログアウトアクションがトリガーされた場合のみ。これを実現するには、rootReducer 内で条件ステートメントを定義して、ログアウト アクションをチェックし、見つかった場合は undefined を返します。
const rootReducer = (state, action) => { if (action.type === 'USER_LOGOUT') { return appReducer(undefined, action); } return appReducer(state, action); };
これで、ログアウト アクションがディスパッチされると、appReducer が呼び出されます。最初の引数として unknown を指定すると、すべての Reducer が初期状態にリセットされます。
Redux-Persist を使用している場合は、状態のコピーが保持されるため、ストレージをクリーンアップする必要がある場合もあります。以下のコードは、これを実現する方法を示しています。
const rootReducer = (state, action) => { if (action.type === 'USER_LOGOUT') { storage.removeItem('persist:root'); return appReducer(undefined, action); } return appReducer(state, action); };
このコードは、ストレージ エンジンから保存された状態を削除し、ユーザーがログアウトしたときに新たに開始されるようにします。
以上がユーザーのログアウト後にアプリケーションの整合性を維持するために Redux ストアの状態をリセットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。