Redux中返回函数的函数参数解释及异步写法相关疑问咨询
问题解答
1. 此处的async (dispatch) => {}是我们自定义的函数吗?
是你自定义的逻辑封装函数,你不会直接调用它,你正常调用外层的getCurrentProfile()之后,返回的这个异步函数会交给Redux中间件去执行。
2. 为什么需要定义这个自定义函数?
原生Redux的dispatch只支持接收普通对象格式的Action,没办法直接处理异步逻辑(比如接口请求、定时器这类需要等待结果再执行后续操作的场景)。这个嵌套的函数就是用来承载你的异步业务逻辑的,Redux中间件识别到你传入的是函数而非普通Action对象时,就会自动执行这个函数,帮你管控异步流程。
3. 我知道dispatch的作用,但此处的dispatch来自哪里,为什么要在两个对象处调用它?
这个dispatch就是你Redux Store实例自带的原生dispatch方法,是Redux Thunk中间件执行你返回的异步函数时,主动注入的参数。
两处调用对应不同的业务状态分支:
- 接口请求成功时,dispatch类型为
GET_PROFILE的Action,把接口返回的用户资料数据传给Reducer更新全局状态 - 接口请求报错时,dispatch类型为
PROFILE_ERROR的Action,把错误提示、状态码等信息传给Reducer更新错误状态
4. 这种写法如果有对应模式的话,名称是什么?
这个是Redux生态的Redux Thunk 异步Action写法,对应的通用设计模式叫Thunk模式,核心逻辑是把需要延迟执行的代码包裹在函数内,等到需要执行的时机再触发调用。
内容的提问来源于stack exchange,提问作者Ridwan Bin Monjur
相关产品推荐
相关产品推荐

