reactjs - 为什么 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上的完整示例
解决方案
推荐阅读
- instances - CLIPS 实例 <> 和 []?实例 eq 自身为 FALSE?
- javascript - 使用反应路由器隐藏导航栏时遇到问题
- ios - 将自定义 UISlider 添加到 ViewController
- node.js - 在 node.js 中动态渲染数据
- reactjs - 如果动态路由需要参数,React Router如何返回404页面?
- matlab - 带循环的元素总和
- complex-event-processing - 基于动态规则的 CEP
- android - 我正在创建包含搜索文本的联系人应用程序及其下方包含所有联系人的 ListView
- c++ - 没有重复定义的 C++ 模板匹配类型
- webpack - 如何在 webpack 开发服务器中启用根代理?