Reactjs 如何使用React组件';MapStateTopsMethod中的本地状态是什么?

Reactjs 如何使用React组件';MapStateTopsMethod中的本地状态是什么?,reactjs,react-native,redux,react-redux,Reactjs,React Native,Redux,React Redux,我有一个react组件,它创建一些局部状态:查询标识符。此查询标识符是在创建组件时创建的,并且不是/不应该从组件的使用者传入。此状态仅在组件实例中使用,不在其他任何对象中共享——因此,它感觉适合作为组件中的本地状态,而不存储在redux存储中 react组件通过redux分派异步操作,当操作完成时,结果存储在redux状态的集合中,该集合由前面提到的查询id索引 在React components MapStateTrops函数中,我想从redux状态的查询结果集合中检索查询结果。但是,组件的查

我有一个react组件,它创建一些局部状态:查询标识符。此查询标识符是在创建组件时创建的,并且不是/不应该从组件的使用者传入。此状态仅在组件实例中使用,不在其他任何对象中共享——因此,它感觉适合作为组件中的本地状态,而不存储在redux存储中

react组件通过redux分派异步操作,当操作完成时,结果存储在redux状态的集合中,该集合由前面提到的查询id索引

在React components MapStateTrops函数中,我想从redux状态的查询结果集合中检索查询结果。但是,组件的查询id仅处于组件实例的本地状态,因此显然无法从mapStateToProps访问(因为mapStateToProps不是组件类的成员,并且显然无法访问该实例的本地状态)

在MapStateTops内部时,是否有访问React组件的本地状态的既定方法?我知道我可以在redux中存储该本地状态(因此它在mapStateToProps中可用),但似乎没有必要,因为该状态对于每个组件实例来说都是本地的。ownProps参数看起来很有趣,但它似乎要求我的React组件的使用者在实例化组件时在props中传递一个值,这在这里是不必要的(甚至是令人困惑的)

有没有一种预期的方法可以做到这一点?或者我的组件设计错误,以至于我不应该尝试使用组件本地状态来正确地将redux状态映射到组件道具


谢谢

无法在MapStateTrops方法中访问组件状态,因为它在组件的包装器
connect
中使用

但是,如果将状态提升到组件的父级,然后将其作为道具传递给子级,则可以在
MapStateTops
中获取这些值。在这种情况下,可以使用ownProps参数访问
mapstatetops
中的值。但是,如果状态只是此特定组件的本地状态,则无需将其移动到父级。如果状态移动到redux存储,则情况类似

处理这种情况的更好方法是将
mapStateToProps
中的整组值传递给组件,然后实现一个基于数据和查询id返回结果的记忆方法

例:

和在components render方法中(您也可以在componentDidUpdate中执行此操作,并将值设置为state,以便在render之外的方法中使用它)

const mapStateToProps = (state, props) => {
   return {
       collection: resultCollectionSelector(state, props)
   }
}
constructor(props) {
    super(props);
    this.getMemoizedFilteredResult = _.memoize(this.getFilteredResult);
}
getFilteredResult = (collection, query) => {
     // process and return result
}
render() {
    const queryResult = this.getMemoizedFilteredResult(this.props.collection, this.state.query);
    ...
}