Javascript 如何在ReactJs中卸载所有根级组件

Javascript 如何在ReactJs中卸载所有根级组件,javascript,reactjs,Javascript,Reactjs,有没有办法让所有根元素都在React中 在我的情况下,元素是通过ReactDOM.render在根目录下创建的,但是当我的组件卸载时,它们不会被卸载 我想获取除AppContainer之外的所有元素,然后在我的组件安装时卸载它们,这可能吗 使用ReactDOM呈现的根组件彼此不知道 要卸载不在卸载组件树中的组件,可以执行以下操作: const App1Component = <div>app1</div>; const app1 = document.getElement

有没有办法让所有根元素都在React中

在我的情况下,元素是通过ReactDOM.render在根目录下创建的,但是当我的组件卸载时,它们不会被卸载

我想获取除AppContainer之外的所有元素,然后在我的组件安装时卸载它们,这可能吗


使用ReactDOM呈现的根组件彼此不知道

要卸载不在卸载组件树中的组件,可以执行以下操作:

const App1Component = <div>app1</div>;
const app1 = document.getElementById("app1")
ReactDOM.render(<App1Component/>, app1);

export class AppContainer extends React.Component {
  componentWillUnmount() {
    // ummount other components not in this tree
    if (app1) 
      ReactDOM.unmountComponentAtNode(app1);
  }
}
const app1组件=app1;
const app1=document.getElementById(“app1”)
ReactDOM.render(,app1);
导出类AppContainer扩展React.Component{
组件将卸载(){
//ummount不在此树中的其他组件
如果(附件1)
ReactDOM.unmountComponentAtNode(app1);
}
}

基本上,每当“主”组件卸载时,使用其他根元素DOM节点调用
ReactDOM.unmountComponentAtNode

AppContainer和其他组件之间的关系是什么?这个问题没有解释发生了什么。我正在将自定义react组件添加到datatable中,我不明白它们为什么要从根开始,因为它们应该在td下进行。根据这个示例。。。您需要跟踪它们,并在应该卸载它们时使用unmountComponentAtNode手动卸载它们。我不能说在您的情况下应该如何做,因为您没有显示自己的代码。您链接的问题使用jQuery,而您可能不使用。MCVE是SO问题的一项要求,因为即使您认为您的案例与另一个问题中的相同,也可能有所不同。感谢您的回答,我不确定如何实现这一点,因为创建datatable时会动态创建元素,根据stackoverflow.com/a/44204235/3284707链接,因此当组件卸载时,我没有td值的参考?从技术上讲,您可以尝试使用
getElementById
获取它们的参考。更好的方法是为每个根元素的DOM节点分配一个react ref。