我试图让Chart.js与React.js一起工作,并且我很接近。使用React删除和重新创建一个元素
我有React渲染正确的图形,当我改变状态时,新的图表绘制在另一个图形上。问题在于悬停事件显然留在了canvas
上,并且将鼠标移到它上面会闪烁以前制作的图形的所有版本。
这是chart.js之错误,据我所知,和解决的办法是删除canvas
元素,并用新的canvas元素替换它。
所以我有这样的代码,它获取网页上的图形:
var LineChart = React.createClass({
render: function() {
return (
<div id="lineHolder" className="graphHolder">
<h2 className="sectionHeader">Earnings per day</h2>
<canvas id="lineChart" width="688" height="286"></canvas>
</div>
);
},
ctx: {},
lineChart: {},
componentDidMount: function() {
this.drawChart();
},
componentDidUpdate: function() {
this.drawChart();
},
drawChart: function() {
var lineData = {
labels: this.props.dates,
datasets: [{
label: "Earnings",
fillColor: "rgba(151,187,205,0.2)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(151,187,205,1)",
data: this.props.earnings,
}]
}
this.ctx = document.getElementById("lineChart").getContext("2d");
this.lineChart = new Chart(this.ctx).Line(lineData);
}
});
但我不能想到“作出反应的方式”来删除和替换canvas元素,每一次它需要被重画。
任何想法?
你怎么想清空该油画像$(“线型图”),空()的值 –
@dhavalpatel前assgine,这个程序没有jQuery的现在。我可能会在稍后添加它,但如果可能的话,我想保留这部分的React.js风格 – fnsjdnfksjdb
document.getElementById(“lineChart”)。innerHTML =“”; –