如果我在为Reactjs调用setProps
(或setState
)之前过滤我的数据会更快吗?
var component = React.renderComponent(
<MainApp />,
document.getElementById("container")
);
var data = {
name: "p",
list: [
{id:1, name:""},
{id:2, name:""},
{id:3, name:""},
//...
]
}
component.setProps(data);
data.name = "w";
现在我想将“p”更新为“w”。如果我这样做,效率更高/更快:
component.setProps(data);
或者这个:
component.setProps({name: "w"});
后者不需要我再将整个数据对象放入其中,但是我必须自己进行过滤。
如果我再次放入整个对象只更改了一件事,Reactjs是否需要处理setProps/setState
中的整个对象,这会减慢它的速度,或者它是否需要在render
内处理所有内容所以没有区别?
1小时后编辑:
我没有得到令人满意的技术答案更快。
我只是做了一个快速的jsPerf测试用例,而不是深究它,看看哪个更快,简单地接受它作为统计真理而不是技术真理。
http://jsperf.com/reactjs-setprops-big-or-setprops-small
令人惊讶的是,给它一个大物体的速度可以忽略不计。 (我认为它会慢一点。)我想内部ReactJS无论如何都要处理整个对象,无论我的输入是小还是大。它无法跳过处理大对象(未被修改),因此没有时间节省不传递大对象。
答案 0 :(得分:0)
仅传递您需要更新的密钥的速度要快一些,但是您应该传递最方便的内容 - 进行自己的过滤将取消您通过更少密钥获得的任何时间优势。
就像我在my other answer中所说的那样,这些微小的变化不会让人担心。做任何最简单的事情,那么只有当您的应用程序运行缓慢时,请考虑添加shouldComponentUpdate
methods以减少不必要的更新。