ホームページ  >  記事  >  ウェブフロントエンド  >  Action Creators 内で Redux 状態にアクセスするにはどうすればよいですか?

Action Creators 内で Redux 状態にアクセスするにはどうすればよいですか?

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

How to Access Redux State within Action Creators?

アクション作成者による Redux 状態へのアクセス

Redux アクションは通常、「薄い」ように設計されており、アプリケーションの更新に必要な情報のみが含まれています州。ただし、シナリオによっては、アクション クリエーター内のグローバル ストア状態にアクセスする必要がある場合があります。この記事では、そのための 2 つのアプローチを検討し、その使用法に関するガイダンスを提供します。

シングルトン ストアの使用

1 つのアプローチには、シングルトン ストアをインポートし、その状態に直接アクセスすることが含まれます。

import store from '../store';

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

このアプローチは実装が簡単ですが、ストアがシングルトンであり、モジュール インポートとして公開されることに大きく依存します。この設計は、サーバー レンダリングの実装を妨げるため、推奨されません。通常、リクエストごとに個別のストア インスタンスが必要です。

Redux Thunk Middleware の使用

推奨されるアプローチは次のとおりです。 Redux Thunk ミドルウェアを活用します。サンク ミドルウェアを使用すると、非同期関数をアクションとしてディスパッチし、getState() メソッドへのアクセスを提供できます。

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

    dispatch(anotherAction(items));
  }
}

このアプローチでは Redux Thunk を使用する必要がありますが、両方のクライアントでストア状態に柔軟にアクセスできます。

考慮事項

アクションクリエイターでの getState() の使用は、Redux コミュニティで議論されています。これに反対する開発者もいますが、条件付きディスパッチやキャッシュ データへのアクセスなどの特定のシナリオでは許容されると考える開発者もいます。

最終的に、最適なアプローチは特定のアプリケーション要件によって異なります。アクション クリエーター内でストア状態へのアクセスが必要な場合は、シングルトン ストアまたはサンク ミドルウェア オプションのいずれかを検討できます。ただし、明確さと追跡可能性を維持するために、アクションは通常「薄く」保つ必要があることに注意することが重要です。

以上がAction Creators 内で Redux 状態にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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