Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ReactJS-销毁旧组件实例并创建新组件_Javascript_Reactjs_Dom - Fatal编程技术网

Javascript ReactJS-销毁旧组件实例并创建新组件

Javascript ReactJS-销毁旧组件实例并创建新组件,javascript,reactjs,dom,Javascript,Reactjs,Dom,我有一个可能让人困惑的问题,因为它不符合标准行为react和虚拟dom的工作方式,但我还是想知道答案 假设我有一个简单的反应组件,叫做“容器”。 容器组件在render方法内部有一个“div”,该方法包含另一个名为“ChildContainer”的组件。围绕“ChildContainer”的“div”具有id“wrappingDiv” 例如: render() { <Container> <div id="wrappingDiv"> <Chi

我有一个可能让人困惑的问题,因为它不符合标准行为react和虚拟dom的工作方式,但我还是想知道答案

假设我有一个简单的反应组件,叫做“容器”。 容器组件在render方法内部有一个“div”,该方法包含另一个名为“ChildContainer”的组件。围绕“ChildContainer”的“div”具有id“wrappingDiv”

例如:

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