Dom 如何告诉react.js不要协调或干扰某个元素?
我的一个组件有一个Dom 如何告诉react.js不要协调或干扰某个元素?,dom,d3.js,svg,reactjs,Dom,D3.js,Svg,Reactjs,我的一个组件有一个div元素,我想在其中溢出并处理/变异我自己的DOM,而不会产生任何干扰 我正在使用d3.js进行手动DOM操作,不,我不是在寻找react-d3解决方案,我需要简单的d3 除了reacts控制台警告之外,所有这些都对我很有效: warning.js:44警告:标签上的未知属性'xmlns'。从元件上拆下此道具。有关详细信息,请参阅 及 js:44警告:未知的DOM属性类。你是说班名吗? 因此,它抱怨我使用class而不是className,或者有一些html属性不是r
div
元素,我想在其中溢出并处理/变异我自己的DOM,而不会产生任何干扰
我正在使用d3.js进行手动DOM操作,不,我不是在寻找react-d3解决方案,我需要简单的d3
除了reacts控制台警告之外,所有这些都对我很有效:
warning.js:44警告:标签上的未知属性'xmlns'。从元件上拆下此道具。有关详细信息,请参阅
及
js:44警告:未知的DOM属性类。你是说班名吗?
因此,它抱怨我使用class
而不是className
,或者有一些html属性不是react样式等等
我想告诉React,从这个组件和下面的组件,它不应该干扰,我将手动管理这个组件下面的DOM
代码如下所示:
import React, { Component } from 'react';
import { findDOMNode } from 'react-dom';
import SomeD3CustomComp from '../some-d3-custom-comp.js';
export default class MyComponent extends Component {
componentDidMount() {
this.injectChart();
}
componentDidUpdate() {
this.injectChart();
}
injectChart() {
const comp = findDOMNode(this.refs.nonReactContainer);
const { chart } = this.props;
const { shouldRender, data } = chart;
if (shouldRender) {
SomeD3CustomComp.render(comp, data);
}
}
render() {
const { chart, someOtherData } = this.props;
const { shouldRender } = chart;
return(
<article>
{
shouldRender &&
<div className="non-react-element" ref="nonReactContainer"></div>
}
<div className="react-element">{someOtherData}</div>
</article>
);
}
}
import React,{Component}来自'React';
从'react dom'导入{findDOMNode};
从“../some-d3-custom-comp.js”导入SomeD3CustomComp;
导出默认类MyComponent扩展组件{
componentDidMount(){
这个.injectChart();
}
componentDidUpdate(){
这个.injectChart();
}
图(){
const comp=findDOMNode(此.refs.nonReactContainer);
const{chart}=this.props;
const{shouldRender,data}=图表;
if(shouldRender){
一些定制组件渲染(组件、数据);
}
}
render(){
const{chart,someOtherData}=this.props;
const{shouldRender}=图表;
返回(
{
应该呈现&&
}
{someOtherData}
);
}
}
更新: 在
shouldComponentUpdate
上返回false
的建议并没有带走我上面提到的错误消息,可能是因为shouldComponentUpdate
只有在componentDidMount
上第一次注入后才发生更新
这种方法的另一个问题是,if returnfalse
code永远不会到达实现更多逻辑的render方法,例如在上面的示例中,我检查是否渲染容器非react元素。这就是我在前一个状态下删除所有先前注入的元素的方法
所以我仍然在寻求帮助
解决了的! 错误报警:/n刚刚发现这些警告消息与代码的不同部分有关。这是一个奇怪的巧合,从这个新功能开发出来的时候起,就出现了一些老问题。结论:仔细查看警告信息! 因此,与d3的集成实际上效果很好。可能与