卸载 React Parent 而不卸载 Child
Unmount React Parent without Unmounting Child
是否可以卸载 React 组件的父组件而不卸载子组件?有哪些解决方法可以实现此结果?当然必须有一些(可能是 hacky)方法来做到这一点。
例子
当这个:
<Parent>
<Child/>
</Parent>
对此的更改:
<Child/>
我希望在不调用 Child
的生命周期方法 componentWillUnmount
的情况下调用 Parent
的生命周期方法 componentWillUnmount
。
我知道这可能是不可能的,但想知道是否有人对这个问题有创造性的解决方案。
更新
这是我的具体用例(希望我能很好地解释这一点):
我有一个高阶组件,它没有引入任何新的 dom 元素,但本质上只是为子组件引入了一些新的上下文。根据此上下文是否存在,子组件呈现略有不同。不幸的是,当我删除并添加父项时,会创建一个新的子实例并且它 unmounts/remounts。这种卸载和重新安装的唯一问题是子元素会执行一些 dom 测量来决定是否为其某些元素显示水平滚动条和溢出菜单。当它 unmounts/remounts 时,此菜单会出现难看的闪烁。
您可以处理渲染逻辑。例如在你的渲染函数中:
if (showParent) {
return (
<Parent>
<Child/>
</Parent>);
} else{
return <Child/>;
}
然后每当布尔值 showParent
改变组件呈现不同。
super-parent object,调用此 render() ,应该存储状态以便更新它们并保留 child(和 parent,以防万一你想重新打开它)。
因此它还应该包含 child 的状态,以便保留它。换句话说:将模型分层移动到超级 parent.
是否可以卸载 React 组件的父组件而不卸载子组件?有哪些解决方法可以实现此结果?当然必须有一些(可能是 hacky)方法来做到这一点。
例子
当这个:
<Parent>
<Child/>
</Parent>
对此的更改:
<Child/>
我希望在不调用 Child
的生命周期方法 componentWillUnmount
的情况下调用 Parent
的生命周期方法 componentWillUnmount
。
我知道这可能是不可能的,但想知道是否有人对这个问题有创造性的解决方案。
更新
这是我的具体用例(希望我能很好地解释这一点):
我有一个高阶组件,它没有引入任何新的 dom 元素,但本质上只是为子组件引入了一些新的上下文。根据此上下文是否存在,子组件呈现略有不同。不幸的是,当我删除并添加父项时,会创建一个新的子实例并且它 unmounts/remounts。这种卸载和重新安装的唯一问题是子元素会执行一些 dom 测量来决定是否为其某些元素显示水平滚动条和溢出菜单。当它 unmounts/remounts 时,此菜单会出现难看的闪烁。
您可以处理渲染逻辑。例如在你的渲染函数中:
if (showParent) {
return (
<Parent>
<Child/>
</Parent>);
} else{
return <Child/>;
}
然后每当布尔值 showParent
改变组件呈现不同。
super-parent object,调用此 render() ,应该存储状态以便更新它们并保留 child(和 parent,以防万一你想重新打开它)。
因此它还应该包含 child 的状态,以便保留它。换句话说:将模型分层移动到超级 parent.