在反应中从父dom节点中删除子组件

Posted

技术标签:

【中文标题】在反应中从父dom节点中删除子组件【英文标题】:Remove a child component from parent dom node in react 【发布时间】:2016-03-31 13:43:58 【问题描述】:

从装载组件的同一个 DOM 元素中卸载组件。

ReactDOM.render(<SampleComponent />, document.getElementById('container'));

然后我们将卸载它:

React.unmountComponentAtNode(document.getElementById('container'));

如果容器上附加了两个或两个以上的组件,如何将组件卸载并重新附加到父容器,例如

<div id="container">
   <SampleComponent1/>
   <SampleComponent2/>
</div>

我想根据来自SampleComponent2 的某些事件删除并重新附加SampleComponent2

【问题讨论】:

React.renderComponent 已被弃用,他们现在正在使用React.render。您也不能在同一个容器上安装两个不同的组件。它只会替换之前渲染的组件。 @Road 在新版本中0.14.* 需要使用ReactDOM.render 而不是React.render 你需要存储状态并监听事件。使用 Flux 或 Redux 库。但是通量有一些问题。 【参考方案1】:

你应该让 React 根据你给它的 props 来处理组件 1 和 2。

例如,使用 ES6 和 React 0.14 纯组件:

const App = (has2) => 
  <div>
     <Component1 />
     has2 && <Component2 />
  </div>

如果has2 是真的,它将显示Component2。只需在 has2 更改时再次调用 render ,其余的由 React 完成。

【讨论】:

以上是关于在反应中从父dom节点中删除子组件的主要内容,如果未能解决你的问题,请参考以下文章

将异步结果从父组件传递给子组件反应功能组件

当子点击事件命中时反应从父组件获取数据

Angular中从父组件到子组件的数据共享

传递给反应组件子级的函数不接收函数上下文

如何在Angular 5中从父组件继承子组件中的css样式

在Vue.js中从父组件执行子方法