用于连接功能的React Redux mapStateToProps参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于连接功能的React Redux mapStateToProps参数相关的知识,希望对你有一定的参考价值。

是否有办法从redux connect函数中的已解析promise中返回普通对象?

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

答案

mapStateToProps应该返回普通对象,例如resolvedState: 'something'

这应该有所帮助:

const mapStateToProps = async (state)=>
    const resolvedState = await resolveStateFunction(state);
    return resolvedState;

然后您可以从组件中引用resolvedState prop

另一答案

[mapStateToProps函数应该是纯同步的

类似于Redux缩减器,mapStateToProps函数应始终为100%纯和同步。它应该简单地将state(和ownProps)作为参数,并返回组件需要作为道具的数据。这应该不用于触发异步行为,例如AJAX数据调用正在获取,并且不应将函数声明为异步。

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

以上是关于用于连接功能的React Redux mapStateToProps参数的主要内容,如果未能解决你的问题,请参考以下文章

将 React Hook 和 redux 一起用于 React 功能组件是不是不好?

使用 react-redux 连接功能时渲染组件上的打字稿错误

Jest/Enzyme 单元测试:如何将存储传递给使用 redux 4 和 react-redux 6 连接功能的浅层组件

将 React forwardRef 与 Redux 连接一起使用

用于 Fronted 和 Dashboard 的 React Redux 文件夹结构

谈谈对redux的认识