Javascript ReactJS-销毁旧组件实例并创建新组件
我有一个可能让人困惑的问题,因为它不符合标准行为react和虚拟dom的工作方式,但我还是想知道答案 假设我有一个简单的反应组件,叫做“容器”。 容器组件在render方法内部有一个“div”,该方法包含另一个名为“ChildContainer”的组件。围绕“ChildContainer”的“div”具有id“wrappingDiv” 例如:Javascript ReactJS-销毁旧组件实例并创建新组件,javascript,reactjs,dom,Javascript,Reactjs,Dom,我有一个可能让人困惑的问题,因为它不符合标准行为react和虚拟dom的工作方式,但我还是想知道答案 假设我有一个简单的反应组件,叫做“容器”。 容器组件在render方法内部有一个“div”,该方法包含另一个名为“ChildContainer”的组件。围绕“ChildContainer”的“div”具有id“wrappingDiv” 例如: render() { <Container> <div id="wrappingDiv"> <Chi
render() {
<Container>
<div id="wrappingDiv">
<ChildContainer/>
</div>
</Container
}
render(){
如果给组件一个键
,并在重新呈现时更改该键
,则旧组件实例将卸载,新组件实例将装载:
render() {
++this.childKey;
return <Container>
<div id="wrappingDiv">
<ChildContainer key={this.childKey}/>
</div>
</Container>;
}
使用钩子,首先创建一个状态变量来保存密钥:
const [childKey, setChildKey] = useState(1);
然后使用useEffect挂钩在渲染时更新关键点:
useEffect(() => {
setChildKey(prev => prev + 1);
});
注意:您可能希望数组参数中的某些内容有效,仅当某个状态发生变化时才更新密钥life saver,683k rep的意思是:)嘿,Crowder,在react hooks中,我该怎么做?肯定是一个life saver