react中可以在钩子就能处理ajax异步请求,为什么还要在redux里面用中间件去处理呢?2者有什么区别么?
redux作为全局状态管理器,统一管理所有数据,默认情况下通过同步提交action(动作)来触发reducer(动作处理)来改变状态。注意,默认是同步改变。网络请求的数据也包含在全局状态中,需要等请求结束才可以触发动作更新状态,这时就是异步动作(async action)(需要配合异步中间件)。
在哪里处理异步都可以,只是在action中处理更加模块化,更易维护,可以更好的组织代码。
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.1k 阅读
对于小型的WebApp,状态比较少,你可以只用ReactJS来实现,在事件回调里发起AJAX请求,请求成功后更新ReactJS 组件的state,从而更新视图。
但是在较大规模的WebApp中,模块多,状态多,这时就需要引入Redux来管理整个WebApp的状态,ReactJS只用作View层以及根据用户触发的事件来dispatch相应的Action,不会有业务相关的逻辑。
这时Ajax请求就会放到Action里处理,但是Redux默认只能分发Plain Object作为Action,加上redux-thunk中间件后,就可以分发函数作为一个Action,函数里就可以做你想干的事情,当然也可以发起Ajax请求来支持异步事件了。