gpt4 book ai didi

javascript - 为什么我的 redux 容器在不相关的状态发生变化时呈现?

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:33 24 4
gpt4 key购买 nike

我的 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)
);

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

最佳答案

state.entities.persons 在更新 cars 之后可能是同一个对象,但是 _.values(state.entities.persons.byId) 每次执行都会生成一个新对象——_.values 不会缓存/重用其结果,即使输入保持不变也是如此。

由于提供给 PureComponent 的 Prop 现在是一个不同的对象(即使内容相同),也会触发重新渲染。

关于javascript - 为什么我的 redux 容器在不相关的状态发生变化时呈现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48411812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com