发生UI事件时,我的顶级React组件接收数据以用作外部对象的道具。我想知道更新组件的道具以用于下一个渲染的正确方法。从外部源设置道具
看起来像组件生命周期方法之一应该处理这个问题,但似乎并非如此。
下面的代码显示了我试过:
•Root.update
:自定义的方法调用外部一旦数据已准备就绪。显示的两种技术都有效。
•Root.getDefaultProps
:用于检索第一个渲染道具。
•Root.render
:这也适用,但在第一次渲染时是多余的。
•Root.componentWillUpdate
:不起作用,但似乎应该。
•Root.componentWillReceiveProps
:这对工作没有意义;道具不会从React组件收到。
var Root = React.createClass({
update: function() {
this.setProps(Obj.data); // works but setProps is deprecated
this.props = Obj.data; // always works
},
getDefaultProps: function() {
return Obj.pageload(); // works on first render
},
componentWillUpdate: function() {
this.props = Obj.data. // does not work
this.setProps(Obj.data); // infinite loop
},
componentWillReceiveProps: function() {
this.props = Obj.data; // does not work
},
render: function() {
this.props = Obj.data; // works but is redundant
// ...
},
});
道具应该是不可变的。你是否可以在你的根组件上使用状态并将其作为道具传递给子组件? – noveyak