[英]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中的重新渲染?
更新cars
, state.entities.persons
可能是同一对象,但是_.values(state.entities.persons.byId)
每次执行_.values
产生一个新对象_.values
不会缓存/重用其结果,即使输入保持不变。
由于提供给PureComponent
的prop现在是一个不同的对象(即使具有相同的内容),因此将触发重新渲染。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.