为什么在以下伪代码示例中,当Container更改foo.bar时,Child不会重新渲染?
Container {
handleEvent() {
this.props.foo.bar = 123
},
render() {
return <Child bar={this.props.foo.bar} />
}
Child {
render() {
return <div>{this.props.bar}</div>
}
}
即使forceUpdate()
在修改Container中的值后调用,Child仍会显示旧值。
如果不保持任何状态而只是渲染道具然后从父级调用它,则应该将Child用作功能组件。替代方法是,可以将钩子与功能组件(useState)一起使用,这将导致无状态组件重新呈现。
同样,您不应更改道具,因为它们是不可变的。维护组件的状态。