首页 > 解决方案 > 为什么 unmountComponentAtNode 会给我“另一个 React 副本”警告

问题描述

我想在引导弹出窗口中显示 chart.js/chart。为此,我定义了两个组件,一个用于 Popover,一个用于 Chart。在我的 Popover 组件中,我处理 componentDidMount() 并覆盖 popover 的模板,为 popover 主体提供一个 id,以便我可以将我的图表安装到 popover 主体中:

componentDidMount() {
    $("#button").popover({
    title: "My Chart",
    template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body" id="popover-body"></div></div>',
    html: true,
    trigger: "focus"
   }).popover("show");
   ReactDOM.render(<MyChart/>, document.getElementById('popover-body'));
  }

然后我尝试在卸载 Popover 组件时卸载我的图表组件:

  componentWillUnmount() {
    ReactDOM.unmountComponentAtNode(document.getElementById('popover-body'))
    $("#button").popover("hide");
  }

但这给了我警告:

警告:unmountComponentAtNode():您尝试卸载的节点由 React 的另一个副本呈现

为什么我会收到此错误?Popover 组件不是 Chart 组件的父组件吗?我正在处理我的状态变化中的所有事情吗?

jsFiddle上的完整示例

标签: reactjstwitter-bootstrapcharts

解决方案


推荐阅读