簡體   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