ホームページ >ウェブフロントエンド >jsチュートリアル >Redux で非同期データ フローにミドルウェアを使用する理由
Redux は、デフォルトで同期データ フローのみをサポートします。コンテナ コンポーネントは、非同期 API を直接呼び出して、その応答に基づいてアクションをディスパッチすることはできません。
直接 API 呼び出しに関する問題:
説明したような UI の場合フィールドとボタンを使用すると、コンテナ コンポーネントは次の手順を実行しようとします:
<pre class="brush:php;toolbar:false"> class App extends React.Component { render() { return ( <div> <input value={this.props.field} /> <button onClick={this.props.update}>Fetch</button> {this.props.isWaiting && <div>Waiting...</div>} </div> ); } update = () => { AsyncApi.getFieldValue() // Perform async API call .then(result => this.props.dispatch({ // Dispatch action with result type: ActionTypes.UPDATED, payload: result })); } }
このアプローチには問題があります。理由:
救済するミドルウェア:
Redux Thunk や Redux Promise などのミドルウェアは、構造化された一貫した実行方法を提供することでこれらの問題を解決します。非同期データ フロー。
Reduxサンク:
Redux Thunk を使用すると、アクションの代わりに関数をディスパッチできます。これらの関数は、必要に応じて非同期タスクを実行し、アクションをディスパッチできます。
Redux Promise:
Redux Promise は、指定された Promise の成功または失敗に基づいてアクションを自動的にディスパッチします。
の利点ミドルウェア:
結論:
Redux で非同期フローに直接アプローチすることは可能ですが、前述の欠点があるため、一般的には推奨されません。ミドルウェアは、Redux アプリケーションの非同期データ フローを管理するためのより効率的で構造化されたソリューションを提供し、コードの品質、保守性、デバッグ機能の向上につながります。
以上がRedux で非同期データ フローにミドルウェアを使用する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。