As dispatch
返回两个之一:
对于同步操作(例如dispatch ({type: 'ACTION'})
它将返回动作对象({type: 'ACTION'}
在我的例子中)
对于 thunk 动作(返回函数的动作创建者),它返回与动作创建者返回的相同结果。
所以对于你的情况只需添加return
给你的动作创造者的声明
const myAction = (arg1, arg2) => {
return (dispatch, getState) => {
return Promise.resolve(arg1 + arg2);
}
}
你(们)能做到myAction
像这样更现实
const myAction = (arg1, arg2) => {
return (dispatch, getState) => {
return fetch(/* some request */).then(response => dispatch ({type: 'RESPONSE_RECEIVED', payload: response}));
}
}
在这种情况下,也将返回已解决的承诺。承诺内容将成为对象{type: 'RESPONSE_RECEIVED', payload: response}
.
或者你可以为返回的承诺设置任意内容,如下所示
const myAction = (arg1, arg2) => {
return (dispatch, getState) => {
return fetch(/* some request */).then(response => {
dispatch ({type: 'RESPONSE_RECEIVED', payload: response})
return response;
}
}
}
在此示例中,将返回已解决的承诺,但其中包含response
inside.
在所有情况下你都可以按照你想要的方式链接
dispatch(myAction(...args)).then((result) => {
...do something with result
});