Reduxアクションは、アプリケーションの状態を変更する意図を表す単純なJavaScriptオブジェクトです。それらは、Reduxストアで変更をトリガーする唯一の方法として機能します。通常、アクションには、実行されるアクションのタイプを示すtype
フィールドと、他の関連データ(多くの場合、 payload
と呼ばれる)が含まれます。
アクションを派遣するには、Reduxストアが提供するdispatch
関数を使用します。プロセスは、次の手順に分類できます。
type
と必要なpayload
を使用してアクションオブジェクトを作成します。dispatch
関数を呼び出します。これにより、アクションがReduxストアに送信され、その後、還元剤を通過して状態を更新します。これが基本的な例です。
<code class="javascript">// Action Creator function incrementCounter() { return { type: 'INCREMENT_COUNTER', payload: 1 }; } // Dispatching the action store.dispatch(incrementCounter());</code>
この例では、 incrementCounter
アクションオブジェクトを返すアクション作成者です。アクションは、 store.dispatch
を使用してストアに派遣されます。
Reduxアクションの構造は簡単ですが、理解することが重要です。典型的なReduxアクションオブジェクトには、次の構造があります。
典型的なアクション構造の例は次のとおりです。
<code class="javascript">{ type: 'ADD_TODO', payload: { id: 1, text: 'Learn Redux' }, error: false, meta: { timestamp: new Date().getTime() } }</code>
Redux Thunkは、アクションオブジェクトの代わりに関数を返すアクション作成者を作成できるミドルウェアです。これらの関数は、非同期API呼び出しを行うなど、副作用を伴う場合があり、時間の経過とともに複数のアクションを発送できます。
Redux Thunkを使用して非同期アクションを派遣する方法は次のとおりです。
Redux Thunkのインストール:まず、Redux Thunkをインストールする必要があります。
<code class="bash">npm install redux-thunk</code>
Redux Thunkをセットアップ:ストアのミドルウェアにReduxサンクを含めます。
<code class="javascript">import { createStore, applyMiddleware } from 'redux'; import thunk from 'redux-thunk'; import rootReducer from './reducers'; const store = createStore(rootReducer, applyMiddleware(thunk));</code>
Async Action Creatorを作成:関数を返すアクション作成者を作成します。この関数は、アクションを発送し、 setTimeout
、 fetch
、またはその他の非同期操作を使用できます。
<code class="javascript">function fetchTodos() { return async (dispatch) => { dispatch({ type: 'FETCH_TODOS_REQUEST' }); try { const response = await fetch('https://example.com/api/todos'); const data = await response.json(); dispatch({ type: 'FETCH_TODOS_SUCCESS', payload: data }); } catch (error) { dispatch({ type: 'FETCH_TODOS_FAILURE', error: error.message }); } }; }</code>
Asyncアクションを派遣します:通常のアクションのように非同期アクションを派遣できるようになりました。
<code class="javascript">store.dispatch(fetchTodos());</code>
この例では、 fetchTodos
非同期操作のさまざまな段階で異なるアクションを派遣する非同期アクション作成者です。
Reduxのアクションタイプを効果的に管理することは、スケーラブルで保守可能なアプリケーションを維持するために重要です。ここにいくつかのベストプラクティスがあります:
アクションタイプに定数を使用します:アクションタイプを別のファイルの定数として定義します。これにより、タイプミスを防ぎ、アプリケーション全体でアクションタイプの維持が容易になります。
<code class="javascript">// actionTypes.js export const INCREMENT_COUNTER = 'INCREMENT_COUNTER'; export const DECREMENT_COUNTER = 'DECREMENT_COUNTER';</code>
ドメインごとにアクションタイプを整理します:属するドメインごとのグループアクションタイプ。これは、多数のアクションタイプの管理に役立ちます。
<code class="javascript">// counterActionTypes.js export const INCREMENT_COUNTER = 'INCREMENT_COUNTER'; export const DECREMENT_COUNTER = 'DECREMENT_COUNTER'; // userActionTypes.js export const LOGIN_USER = 'LOGIN_USER'; export const LOGOUT_USER = 'LOGOUT_USER';</code>
アクション作成者を使用:アクションクリエイターを使用してアクションを生成します。これにより、エラーの可能性が減り、コードがより再利用可能になります。
<code class="javascript">// actions.js import { INCREMENT_COUNTER } from './actionTypes'; export function incrementCounter() { return { type: INCREMENT_COUNTER, payload: 1 }; }</code>
type
フィールドが必要であり、 payload
、 error
、またはmeta
フィールドがあることを指定します。これらのベストプラクティスに従うことにより、Reduxでアクションタイプを効果的に管理できるため、よりクリーンで保守可能なコードが得られます。
以上がReduxアクションとは何ですか?どのように派遣しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。