Javascript 使用setState或setProps对Reactjs更有效?
我正在使用ReactJS(通过facebook),我可以选择调用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
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%的差异应该消失