何时在动作创建者中使用调度?

时间:2020-07-11 07:44:05

标签: javascript reactjs react-redux es6-promise redux-thunk

我在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());
}

MainFunction:

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

Q1:如果我从第二个函数中删除了dispatch:audioVerificationResult,则会收到错误消息

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

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

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

我最近开始学习Promises,Redux和Thunk(一般是Web开发)。如果问题过于笼统,请引导我学习。

谢谢您的时间。

1 个答案:

答案 0 :(得分:0)

您的 return Mono.zip(p1Mono, p2Mono).flatMap(data -> { P1 p1 = data.getT1(); p2 p2 = data.getT2(); //some operation and combine result to p return Mono.just(p); }); 中的函数并非完全是动作创建者,因为它们没有像redux docs所建议的那样返回ActionCreator.js。它们只是js函数。

如果您在组件中使用plain object并阅读dispatch,则无需.then()results/data仅对dispatch更新有帮助。

希望this answer帮助您更好地了解有关中间件的详细信息。