下面是我的实际代码的示例版本。
// parent component
this.state = {
...,
dummies: [
{id: 1, name: "nothing"},
{id: 2, name: "nothing"},
{id: 3, name: "nothing"}
],
...
};
render(){
return <ChildComponent dummies={this.state.dummies} />;
};
// ChildComponent
this.state = {
...,
dummies: this.props.dummies
};
...
{
this.state.dummies.map((eachDummy) => {
return <GrandChild id={eachDummy.id} dummy={eachDummy} />
});
}
经过一些互动后,我正在更新我父母状态的假人,如下所示
this.setState({
...this.state,
dummies: [
{id: 1, name: "something"}, // observe change in name property
{id: 2, name: "nothing"},
{id: 3, name: "nothing"}
]
})
真正的问题来了。当假人的名称属性发生微小变化时,如何让我的 Child 和 GrandChild 组件呈现?我认为 React 的浅层比较无法识别更改,但我需要 Child 和 GrandChild 重新渲染和更新 UI。我怎样才能做到这一点?(请注意,我无法避免状态中的对象数组)