我目前正在使用 React 创建 d3 可视化。我对两者之间的关系有点困惑render
and componenetDidMount
方法(方法是正确的术语吗?)。这是我所拥有的(为了简单起见,我排除了一些代码):
var Chart = React.createClass({
componentDidMount: function () {
var el = this.getDOMNode();
console.log(el);
d3Chart.create(el, {
width: '500',
height: '300'
}, this.getChartState(),this.getAccessState);
},
render: function () {
return (
<div className="row pushdown">
<div className="d3-block">
<div className="Chart" />
</div>
</div>
);
}
}
3号线,el
被分配this.getDOMNode();
它始终指向渲染函数中的顶级元素(div "row pushdown"
)。也是如此this.getDOMNode()
总是引用渲染函数中的顶级元素?我实际上想做的是在最里面渲染 d3 图表div
(.Chart
)。我首先尝试做this.getDOMNode().find('.Chart')
但这没有用。
第一个问题:我知道我不应该尝试在这里接触真实的 DOM,但是我该如何在 VirtualDOM 上进一步选择一些东西呢?
第二个问题:我知道,鉴于我对此很陌生,我可能以错误的方式这样做。你能在这里建议一个更好的方法吗?
第三个问题:我想在同级中添加图表图例div
of ".Chart"
。我应该为此创建一个新组件吗?或者在我的 d3Chart 中我可以使用选择器来执行此操作吗?
预先感谢您的帮助!
附:我有一个侧面问题:
我见过人们使用React.render(<Chart />,document.body)
而不是使用React.createElement
在那之内。有人可以向我解释其中的区别吗?