【发布时间】:2019-12-13 00:02:27
【问题描述】:
我有这个组件树:
Father
Son
Childrens
Daughter
Childrens2
Modal
每当 Modal 打开(通过设置 this.setState({ openSimpleModal: true });)或关闭(设置状态为 false)时,组件 Son、Daughter 及其子组件都会重新渲染到。有没有办法可以打开和关闭模态,但不允许重新渲染 1 个特定组件,例如 Son(及其子组件)但重新渲染其余部分? (女儿等)但仅在模态打开或关闭时。我需要在其他场景中渲染每个子组件,但是我需要在 Modal 打开/关闭时停止重新渲染
我尝试的是使用
shouldComponentUpdate(nextProps: Readonly<P>, nextState: Readonly<S>, nextContext: any): boolean {
return this.state.openSimpleModal === nextState.openSimpleModal
}
并决定模态的状态是否改变,在这种情况下返回 false,但它不起作用,因为模态当然不会显示。
【问题讨论】:
-
这取决于你如何渲染你的组件;你能展示更多你的模态组件吗?例如,当
openSimpleModal为false时,如果它没有返回任何元素,则无法不重新渲染,因为它必须重新创建元素。 -
我的理解是,我们的openSimpleModal设置为false,Father将被卸载,因此其他组件也将被卸载?如果它被卸载,它们都必须重新渲染。如果您关心的是保留状态,则应将状态存储在父组件中。如果您关心的是性能,则需要考虑其他因素来优化渲染。
标签: reactjs