我想setProps
从外面打电话,myComponent
以便能够动态更改数据myComponent
.
我希望在更改组件的道具后,它会重新渲染自己.
我正在尝试以下方法:
var myComponent = React.createClass({
render: function () {
return (
React.DOM.div(null, this.props.data)
);
}
});
React.renderComponent(
myComponent({ data: someData }),
document.getElementById('predictionContent')
);
myComponent.setProps({data: someData2});
Run Code Online (Sandbox Code Playgroud)
问题是我不明白如何使用setProps
组件.就我而言,我收到"未定义"错误.
怎么解决这个?
Dou*_*las 23
警告: setProps
在现在已经过时.
React.createClass
返回一个类,它React.renderComponent
返回具有该setProps
方法的类的实例.
试试这个:
var MyComponent = React.createClass({
render: function () {
return React.DOM.div(null, this.props.data);
}
});
var myComponent = React.renderComponent(
new MyComponent({ data: someData }),
document.getElementById('predictionContent')
);
myComponent.setProps({ data: someData2 });
Run Code Online (Sandbox Code Playgroud)
话虽如此,Chad Scira的回答也是正确的:重新渲染可能比调用setProp更好.这将使它看起来与render()方法中的代码相同,并且renderComponent
无论是第一次还是后续更新,您始终都可以调用.
像这样:
var MyComponent = React.createClass({
render: function () {
return React.DOM.div(null, this.props.data);
}
});
React.renderComponent(
new MyComponent({ data: someData }),
document.getElementById('predictionContent')
);
// later
React.renderComponent(
new MyComponent({ data: someData2 }),
document.getElementById('predictionContent')
);
Run Code Online (Sandbox Code Playgroud)
你不应该这样做.而是像这样再次运行renderComponent方法:
React.renderComponent(
myComponent({ data: someData2 }),
document.getElementById('predictionContent')
);
Run Code Online (Sandbox Code Playgroud)
react会自动解决差异
归档时间: |
|
查看次数: |
74223 次 |
最近记录: |