繁体   English   中英

当不相关的状态更改时,为什么我的redux容器会呈现?

[英]Why does my redux container render when unrelated state changes?

我的redux状态如下所示:

{ 
  entities: {
    cars: {
      byId: {},
      isFetching: true
    },
    persons: {
      byId: {},
      isFetching: false
    }  
  }
}

我的人容器:

class PersonPageComponent extends React.PureComponent<
  IPersonPageProps & InjectedAuthRouterProps,
  {}
> {
  render() {
    console.log('render´);
    return (<p>helllo</p>);
  }
}

const mapStateToProps = (state: RootState, ownProps: { title: string }) => ({
  list: _.values(state.entities.persons.byId), // personsSelector(state)  
});

export const PersonPage = userIsAuthenticated(
  connect<IPersonPageProps, {}, {}>(
    mapStateToProps
  )(PersonPageComponent)
);

当我在entity.cars下的redux状态发生更改时,为什么我的Person容器会重新渲染? 自“实体”更改以来,是否应该触发渲染? GET_CARS操作设置entity.cars.isFetching = true。 是否应该导致PersonComponent中的重新渲染?

更新carsstate.entities.persons可能是同一对象,但是_.values(state.entities.persons.byId)每次执行_.values产生一个新对象_.values不会缓存/重用其结果,即使输入保持不变。

由于提供给PureComponent的prop现在是一个不同的对象(即使具有相同的内容),因此将触发重新渲染。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM