redux里面,异步要用middleware来处理。这个怎么理解?比如我发一个ajax,然后在回调里面去dispatch(action),这样不可以吗?为什么要用到middleware?
redux里面,异步要用middleware来处理。这个怎么理解?比如我发一个ajax,然后在回调里面去dispatch(action),这样不可以吗?为什么要用到middleware?
楼上答案思路是对的,但是我认为,其实middleware本质是对原本store中的dispatch
方法的强化。如果你需要一些额外的功能,比如打印用户请求日志,就可以对dispatch
方法进行强化。
redux是flux的一个实现,也只是一个模式的实现。更多用户需要的定制化的东西,就需要这个中间件的东东了。
为redux提供中间件的接口是很聪明的,这样就会产生无数优秀的中间件,也在另一方面促进了框架的繁荣。
所以对你本身的代码来讲,这么做是可以的,但是redux的设计者显然考虑的更多。
middleware 本质是一个多层函数的柯里化,主要作用在于两点:
可以对数据流做集中的处理,而且可以在多个 middleware 之间串联
通过注入的 dispatch 和 getState 可以方便的访问到当前的状态,可以对其做额外进行处理,也能异步的 dispatch 当前的 action
10 回答11k 阅读
6 回答2.9k 阅读
5 回答4.7k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
你的方法是可以的,只要能拿到dispatch方法即可。
middleware本质上是对dispatch的替换。
支持异步action的中间件thunk的主要作用是给你的action creator注入dispatch,让你在异步的回调中能够拿到dispatch并使用。