我应该在Reactjs上调用setProps之前过滤我的数据吗?

时间:2014-02-24 06:37:17

标签: javascript reactjs

如果我在为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无论如何都要处理整个对象,无论我的输入是小还是大。它无法跳过处理大对象(未被修改),因此没有时间节省不传递大对象。

1 个答案:

答案 0 :(得分:0)

仅传递您需要更新的密钥的速度要快一些,但是您应该传递最方便的内容 - 进行自己的过滤将取消您通过更少密钥获得的任何时间优势。

就像我在my other answer中所说的那样,这些微小的变化不会让人担心。做任何最简单的事情,那么只有当您的应用程序运行缓慢时,请考虑添加shouldComponentUpdate methods以减少不必要的更新。