在redux connect函数中是否有办法从已解决的承诺中返回普通对象?
const resolveStateFunction = (state) =>{
return Promise.resolve(state);
}
const mapStateToProps = async (state)=>{
const resolvedState = await resolveStateFunction(state);
return resolvedState;
}
const mapDispatchToProps = () => {
return { apiResponse: apiResponse };
};
export default connect(mapStateToProps, mapDispatchToProps)(SchoolTemp);
resolvedState
变量返回一个已解析的对象值,但是随后出现一条错误消息
Connect(SchoolTemp)中的mapStateToProps()必须返回纯文本 宾语。而是收到了[object Promise]。
答案 0 :(得分:0)
mapStateToProps
应该返回普通对象,例如{resolvedState: 'something'}
。
这应该有帮助:
const mapStateToProps = async (state)=>{
const resolvedState = await resolveStateFunction(state);
return {resolvedState};
}
然后,您可以从组件中引用resolvedState
prop
答案 1 :(得分:0)
mapStateToProps
函数应该是纯同步的
就像Redux reducer一样,mapStateToProps函数应始终为100%纯 和同步。它应该简单地将state(和ownProps)作为 参数,并返回组件需要作为道具的数据。这应该 不用于触发异步行为,例如AJAX数据调用 提取,并且不应将函数声明为异步。