【发布时间】:2015-09-29 08:21:58
【问题描述】:
这是我的代码:
var Component_1 = React.createClass({
getInitialState: function() {
return {
subcomponents: []
};
},
componentWillReceiveProps: function(nextProps) {
//push new subcomponent into 'subcomponents'
this.state.subcomponents.push(nextProps.ele);
},
render: function() {
return (
<div>
{this.state.subcomponents}
</div>
);
}
});
// A router like that:
var hash = window.location.hash
if (hash === '#way1') {
React.render( < Component ele={<SubComponent_1 />} /> , document.body);
} else if (hash === '#way2') {
React.render( < Component ele={<SubComponent_2 />} /> , document.body);
} else {
React.render( < Component ele={<SubComponent_3 />} /> , document.body);
}
代码很简单:当位置哈希改变时,使用ele 的新道具重新渲染<Component />(并且ele 的值是一个子组件)。
每次重新渲染Component 都会触发componentWillReceiveProps 并将<Subcomponent_* /> 推入subcomponents。
所以在特定情况下,<Component /> 可能看起来像这样:
<div>
<SubComponent_1 />
<SubComponent_2 />
</div>
我的目的是:当<SubComponent_2 />推入subcomponents并触发<Component />时,如何将整个数据(例如用户输入input元素的一些数据)保留在<SubComponent_1 />中用两个子组件重新渲染?
更新:
当<SubComponent_1 />以某种方式被删除时,如何保留<SubComponent_2 />的全部数据?我发现将 key 属性添加到所有子组件不起作用。
【问题讨论】:
-
对不起,我已经删除了:-)
标签: javascript reactjs react-native