【发布时间】:2016-11-21 14:46:11
【问题描述】:
我正在使用 React、Charts.js 和 react-chart.js。
我正在发出一个 API 请求,该请求返回我正在可视化的数据。我遇到的问题是,当页面最初加载时,它只显示其中一个名称,然后再次呈现并显示三个名称的完整列表。问题是每次调用渲染函数时都会创建一个新图。
有谁知道是否有办法防止每次都创建新图表,而是覆盖之前创建的图表?
画布被渲染了两次,我猜这是代码设置的方式。在第一个画布元素上它只有一个名称,但在第二个画布上它包含所有三个名称
请看我下面的代码:
var App = React.createClass({
getInitialState: function() {
return {
names: [],
isLoaded: false
}
},
componentDidMount: function() {
$.get(url, function(data) {
this.setState({
names: data,
isLoaded: true
})
}.bind(this));
},
render: function() {
return ( < div > {
this.state.isLoaded ? < Graph names = {
this.state.names
}
/> : <div>Still Loading... </div >
} < /div>)
}
});
var Graph = React.createClass({
render: function() {
var names = [];
for (var i = this.props.artists.length - 1; i >= 0; i--) {
names.push(this.props.names[i].name);
}
var chartData = {
labels: names,
datasets: [{
data: goals
}, {
data: predictions
}]
};
return <LineChart data = {chartData} width = "600" height = "250" / >
}
});
【问题讨论】:
-
我不知道... Ract 基于虚拟 DOM... 当它发现从虚拟 dom 到真实 dom 的差异时,它会修补 .. 所以您重新渲染了该图..一种方法(我不知道是否有效)是直接修改dom,使用jquery ...
-
是复制画布还是重新渲染画布的问题?
-
@BradBumbalough 两次渲染画布,我猜这是意料之中的。但是在第一个画布上它只有一个名称,但在第二个画布上它包含所有三个名称
标签: javascript reactjs chart.js