Javascript 使用setState或setProps对Reactjs更有效?

Javascript 使用setState或setProps对Reactjs更有效?,javascript,reactjs,Javascript,Reactjs,我正在使用ReactJS(通过facebook),我可以选择调用setState或setProps,但不知道哪一个更有效 (不要把我的代码看得一文不值。这只是一种简化。我主要关心的是知道setProps或setState中哪个更快。) 对于setProps,我有: function XHRcallback(data) { React.renderComponent(MainApp, $("container")).setProps(data); } 对于setState,我有: var u

我正在使用ReactJS(通过facebook),我可以选择调用
setState
setProps
,但不知道哪一个更有效

(不要把我的代码看得一文不值。这只是一种简化。我主要关心的是知道
setProps
setState
中哪个更快。)

对于setProps,我有:

function XHRcallback(data) {
  React.renderComponent(MainApp, $("container")).setProps(data);
}
对于setState,我有:

var updateAll;

function XHRcallback(data) {
  updateAll(data);
}

var List = React.createClass({
  getInitialState: function() {

    updateAll = function(data) {
      this.setState(data);
    }.bind(this);

  },

  render: function() {
    //stuff
  }
});

状态和道具在反应中同样有效;它们用于不同的事情。将
props
视为组件的输入,将
state
视为内部私有变量


有关状态与道具的讨论,请参见。

但是
setProps
我必须从根本上调用它。使用
setState
我可以更接近被操纵的元素。那么这应该更快吗?你不应该根据表现来决定是使用状态还是道具。在这两种情况下,反应都很快。我链接的博客文章解释了何时使用道具以及何时使用状态。谢谢你的博客文章。我以前读过,但我仍然不知道是否应该在最接近被操纵模式的元素上调用
setState
,或者是否应该在根节点上调用
setProps
,这意味着整个应用程序都需要重新渲染。我知道
render
的速度很快,但我仍然不喜欢这样的想法,即需要为根目录生成一个完整的虚拟DOM,而不仅仅是为页面的一部分生成虚拟DOM。我发现
setState
setProps
的速度要快23%,通过jsPerf:@Anusser上的测试用例,你为什么不使用
component.setState
component.setProps
?如果使用shouldComponentUpdate,23%的差异应该消失