对连接函数反应Redux mapStateToProps参数

时间:2019-12-04 21:22:05

标签: reactjs redux react-redux

在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]。

2 个答案:

答案 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数据调用   提取,并且不应将函数声明为异步。

https://react-redux.js.org/using-react-redux/connect-mapstate#mapstatetoprops-functions-should-be-pure-and-synchronous