ホームページ >ウェブフロントエンド >jsチュートリアル >Redux アクション作成者は状態にどのようにアクセスする必要がありますか: ストアまたはサンクから?

Redux アクション作成者は状態にどのようにアクセスする必要がありますか: ストアまたはサンクから?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-21 18:48:29525ブラウズ

How Should Redux Action Creators Access State: From Store or Thunk?

Action Creator 内の Redux 状態へのアクセス

質問:

Redux アプリケーションでは、どのようにアクション クリエーター内からグローバル ストアの状態にアクセスできますか?次のアプローチは適切ですか?

アプローチ 1:

<code class="javascript">import store from '../store';

export const SOME_ACTION = 'SOME_ACTION';
export function someAction() {
  return {
    type: SOME_ACTION,
    items: store.getState().otherReducer.items,
  }
}</code>

アプローチ 2:

<code class="javascript">export const SOME_ACTION = 'SOME_ACTION';
export function someAction() {
  return (dispatch, getState) => {
    const {items} = getState().otherReducer;

    dispatch(anotherAction(items));
  }
}</code>

答え:

アクションクリエイター内での状態へのアクセスの受け入れ可能性は、Redux コミュニティ内で議論の的となっています。

アプローチ 1:

store.getState() を介して状態に直接アクセスすることは、ストアがグローバル シングルトンであることに依存するため、推奨されません。サーバー上では、リクエストごとに個別のストアが存在する可能性があるため、このアプローチには問題があります。

アプローチ 2:

このアプローチは、Redux Thunk ミドルウェアを使用するため推奨されます。非同期アクションと getState() によるストア状態の取得が可能になります。サンクはクライアントとサーバーの両方でシームレスに動作し、状態へのアクセスが特定のアクションに分離されるようにします。

考慮事項:

  • Redux 作成者の視点: アクション作成者による状態アクセスは、変更履歴をわかりにくくする可能性があるため、通常は推奨されません。
  • Redux メンテナの観点: このようなユースケース向けに特別に設計された機能を活用するため、サンク内で getState を使用することが推奨されます。 .

最終的には、両方のアプローチで望ましい結果が得られますが、潜在的な落とし穴を回避し、環境間で一貫性を維持するには、アプローチ 2 が推奨されるベスト プラクティスです。

以上がRedux アクション作成者は状態にどのようにアクセスする必要がありますか: ストアまたはサンクから?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。