首页 > 解决方案 > 何时在动作创建者中使用调度?

问题描述

我在我的 ActionCreator.js 文件中首先定义了两个函数:

export const getAudioForVerification = ()=>{
return fetch(baseUrl+'audio',{
    // Get Request
}
.then(response=>response.json());}

第二:

export const audioVerificationResult = (audioId,verificationResult) =>(dispatch)=>{
return fetch(baseUrl+'audio',{
    // PUT Request
})
.then(response=>response.json());
}

主功能:

const mapDispatchToProps = dispatch => ({
getAudioForVerification: ()=>dispatch(getAudioForVerification),
audioVerificationResult: (audioId,verificationResult)=>dispatch(audioVerificationResult(audioId,verificationResult))
});

Q1:如果我从我的第二个函数中删除调度:audioVerificationResult 我收到一个错误

动作必须是普通对象。使用自定义中间件进行异步操作。

为什么第一个函数也不会出现这样的错误?

Q2:第一个函数返回一个promise(我可以在调用这个函数后在我的MainComponent中使用.then),而第二个没有。为什么?

我最近开始学习 Promises、Redux 和 Thunk(一般的 Web 开发)。如果问题太宽泛,请引导我到学习资源。

感谢您的时间。

标签: javascriptreactjsreact-reduxes6-promiseredux-thunk

解决方案


您中的函数ActionCreator.js并不完全是动作创建者,因为它们没有plain objectredux 文档建议的那样返回。它们只是js函数。

dispatch如果您在组件中使用并.then()阅读results/data. dispatch仅帮助您进行redux store更新。

希望这个答案可以帮助您更好地了解有关中间件的详细信息。


推荐阅读