几天前我在考虑在我的情况下使用反应。案件很简单:我有对象的列表,它处理像上面例子中的快速更新:反应CPU使用率(快速更新)
var ListItem = React.createClass({
render: function() {
return (
<tr>
<td>{this.props.data.sign}</td>
<td>{this.props.data.a}</td>
<td>{this.props.data.b}</td>
<td>{this.props.data.time}</td>
</tr>
);
}
});
var List = React.createClass({
getInitialState: function() {
return { items: list };
},
tick: function() {
var index = Math.floor(Math.random() * 100);
var randItem = getRandomItem();
var item = this.state.items[index];
item.sign = randItem.sign;
item.a = randItem.a;
item.b = randItem.b;
item.time = randItem.time;
this.setState({items: tick(this.state.items)});
},
componentDidMount: function() {
this.interval = setInterval(this.tick, 0);
},
render: function() {
return (
<table>
{this.state.items.map(function(item){
return <ListItem key={item.i} data={item} />
})}
</table>
);
}
});
这是一个完整链接例子,我已经准备了:
https://jsfiddle.net/zsjmp3ph/
的问题是我的CPU占用了大约25-30%的使用量。我已经在其他机器上测试过,它是一样的。 React很正常吗?在我看来,这很奇怪,但我在图书馆是全新的,所以我想问更多有经验的人。告诉我,如果我做错了什么。提前致谢。
Good point Capaj! 0ms(10ms)的间隔会产生页面更新不切实际的情况。 requestAnimationFrame()会有所帮助,但是如果频率为**,那么我建议将它与setTimeout()结合使用,以便将100ms周期内的所有更新推迟到单页重绘。 – NicolaeS