我在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开发)。如果问题过于笼统,请引导我学习。
谢谢您的时间。
答案 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帮助您更好地了解有关中间件的详细信息。