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 Thunk:
Redux Thunk 允许您分派函数而不是操作。这些函数可以执行异步任务并根据需要调度操作。
Redux Promise:
Redux Promise 根据给定 Promise 的成功或失败自动调度操作。
的好处中间件:
中结论:
虽然 Redux 中的异步流程的直接方法是可能的,但由于上述缺点,通常不鼓励这样做。中间件为管理 Redux 应用程序中的异步数据流提供了更高效、更结构化的解决方案,从而提高了代码质量、可维护性和调试能力。
以上是为什么在 Redux 中使用中间件进行异步数据流?的详细内容。更多信息请关注PHP中文网其他相关文章!