关于redux异步的疑惑

react中可以在钩子就能处理ajax异步请求,为什么还要在redux里面用中间件去处理呢?2者有什么区别么?

阅读 2.7k
2 个回答

对于小型的WebApp,状态比较少,你可以只用ReactJS来实现,在事件回调里发起AJAX请求,请求成功后更新ReactJS 组件的state,从而更新视图。

但是在较大规模的WebApp中,模块多,状态多,这时就需要引入Redux来管理整个WebApp的状态,ReactJS只用作View层以及根据用户触发的事件来dispatch相应的Action,不会有业务相关的逻辑。

这时Ajax请求就会放到Action里处理,但是Redux默认只能分发Plain Object作为Action,加上redux-thunk中间件后,就可以分发函数作为一个Action,函数里就可以做你想干的事情,当然也可以发起Ajax请求来支持异步事件了。

redux作为全局状态管理器,统一管理所有数据,默认情况下通过同步提交action(动作)来触发reducer(动作处理)来改变状态。注意,默认是同步改变。网络请求的数据也包含在全局状态中,需要等请求结束才可以触发动作更新状态,这时就是异步动作(async action)(需要配合异步中间件)。

在哪里处理异步都可以,只是在action中处理更加模块化,更易维护,可以更好的组织代码。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题