ホームページ >ウェブフロントエンド >jsチュートリアル >Redux ツールキット: React Thunk および React Saga。Vishal Tiwari から学びます。
React Thunk は、アクション オブジェクトの代わりに関数を返すアクション クリエーターを作成できるミドルウェアです。これは、API リクエストや複雑な同期ロジック (アクションの条件付きディスパッチなど) などの非同期操作を処理する場合に便利です。返された関数は引数としてdispatchとgetStateを受け取り、他のアクションをディスパッチしたり、関数内の現在の状態にアクセスしたりできるようにします。
React アプリで redux-thunk を使用する基本的な例を次に示します。
// Action Creator with Thunk export const fetchUser = () => { return async (dispatch) => { dispatch({ type: 'FETCH_USER_REQUEST' }); try { const response = await fetch('/api/user'); const data = await response.json(); dispatch({ type: 'FETCH_USER_SUCCESS', payload: data }); } catch (error) { dispatch({ type: 'FETCH_USER_FAILURE', payload: error }); } }; };
React Saga は、ジェネレーター関数 を使用して、より体系的に副作用を処理できるようにするミドルウェアです。サンクのような関数を返す代わりに、「エフェクト」システムを使用して非同期操作を管理し、ロジックのフローを制御します。 Saga は、ディスパッチされたアクションをリッスンし、API 呼び出し、データの取得、その他のタスクなどの副作用を実行できる、長時間実行されるバックグラウンド プロセスです。
redux-saga の基本的な使用例を次に示します。
// Action Creator with Thunk export const fetchUser = () => { return async (dispatch) => { dispatch({ type: 'FETCH_USER_REQUEST' }); try { const response = await fetch('/api/user'); const data = await response.json(); dispatch({ type: 'FETCH_USER_SUCCESS', payload: data }); } catch (error) { dispatch({ type: 'FETCH_USER_FAILURE', payload: error }); } }; };
Aspect | React Thunk | React Saga |
---|---|---|
Concept | Returns functions in action creators | Uses generator functions for side effects |
Learning curve | Easier to learn and use | Higher learning curve due to generators |
Asynchronous flow | Handles simple async logic | Better for complex async workflows |
Code structure | Less structure, can get messy in large apps | Provides a clear, structured approach |
Testing | Testing can be more challenging | Easier to test because of generators |
Use cases | Simple async logic, API requests | Complex flows (e.g., sequences, retries) |
Performance | Lightweight | More powerful, but slightly more overhead |
次の場合は React Thunk を使用します。
次の場合に React Saga を使用します:
以上がRedux ツールキット: React Thunk および React Saga。Vishal Tiwari から学びます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。