Javascript 卸载父级而不卸载子级
是否可以在不卸载子组件的情况下卸载React组件的父组件?为实现这一结果,存在哪些变通办法?当然,一定有某种(潜在的黑客)方法可以做到这一点 示例 当:Javascript 卸载父级而不卸载子级,javascript,reactjs,higher-order-components,Javascript,Reactjs,Higher Order Components,是否可以在不卸载子组件的情况下卸载React组件的父组件?为实现这一结果,存在哪些变通办法?当然,一定有某种(潜在的黑客)方法可以做到这一点 示例 当: <Parent> <Child/> </Parent> 对此的更改: <Child/> 我希望调用Parent的生命周期方法componentWillUnmount,而不调用Child的生命周期方法componentWillUnmount 我承认这可能是不可能的,但我想知道是否有人
<Parent>
<Child/>
</Parent>
对此的更改:
<Child/>
我希望调用Parent
的生命周期方法componentWillUnmount
,而不调用Child
的生命周期方法componentWillUnmount
我承认这可能是不可能的,但我想知道是否有人能创造性地解决这个问题
更新
下面是我的具体用例(希望我能很好地解释这一点):
我有一个高阶组件,它不引入任何新的dom元素,但本质上只是为子组件引入一些新的上下文。子组件的渲染略有不同,具体取决于是否存在此上下文。不幸的是,当我删除并添加父对象时,会创建一个新的子对象实例,并将其卸载/重新装载。这种卸载和重新装载的唯一问题是,子元素进行一些dom测量,以决定是否为其某些元素显示水平滚动条和溢出菜单。当它卸载/重新装载时,此菜单会有一个难看的闪烁。您可以处理渲染逻辑。例如,在渲染函数中:
if (showParent) {
return (
<Parent>
<Child/>
</Parent>);
} else{
return <Child/>;
}
if(showParent){
返回(
);
}否则{
返回;
}
然后,每当布尔值showParent
更改时,组件的渲染方式就会不同
调用此render()的超级父对象应该存储状态,以便更新它们并保留子对象(以及父对象,以防您想重新打开它)
因此,它还应该包含孩子的状态,以便保存它。换句话说:将模型按层次向上移动到超级父级。您能详细介绍一下这个用例吗?如果您只有父级和子级,那么如果不渲染父级,则无法渲染子级。你需要像App->Routes和conditional render这样的东西如果你想这样做的话,你需要包括一个机制来将内部状态从一个传递到另一个。事实上,调用这个render()的超级父级应该存储状态。我认为这是唯一一种在技术上用相同的道具创建一个新的
实例的方法,因此如果孩子有任何状态,它就会丢失。但我认为你是对的,这是唯一的办法。是的。。。正是我的想法+1.