【发布时间】:2015-09-11 19:34:51
【问题描述】:
我需要画一张大桌子,不是很大,大约 400x400 个单元格。但是 React 渲染它太慢了,每次点击单元格时,单元格都应该更新,这个更新需要同样大量的时间。有什么建议可以加快速度吗?或者 React 只是不适合此类任务的工具?
这里是示例(表格大小略有减小): https://jsfiddle.net/69z2wepo/15731/
var ROWSC = 400;
var COLSC = 100;
var Hello = React.createClass({
getInitialState: function () {
return {
t: { "1-1": 'c' }
};
},
clicked: function (k) {
var t = this.state.t;
t[k] = t[k] ? 0 : 'c';
this.setState({ t: t });
},
render: function() {
var items = [];
for (var r = 0; r < ROWSC; r++) {
var cols = [];
for (var c = 0; c < COLSC; c++) {
var k = ''+r+'-'+c;
cols.push(<td key={c} onClick={this.clicked.bind(this,k)} className={this.state.t[k]}> </td>);
}
items.push(<tr key={r}>{cols}</tr>);
}
return <table>
{items}
</table>
</div>;
}
});
React.render(<Hello name="World" />, document.getElementById('container'));
【问题讨论】:
-
嗯,你可以看到这是 O(n^2),400*100 不是那么大,但它仍然是。如果您将其减小到 50*50,您将立即看到差异。此链接上有一个有趣的速度比较,但反应仍然胜过其他东西:codementor.io/reactjs/tutorial/…
标签: javascript reactjs