【发布时间】:2015-07-11 00:38:14
【问题描述】:
我有一个简单的组件<StatefulView> 维护内部状态。我有另一个组件<App> 可以切换是否呈现<StatefulView>。
但是,我想在安装/卸载之间保持<StatefulView> 的内部状态。
我想我可以在<App> 中实例化组件,然后控制它是否渲染/安装。
var StatefulView = React.createClass({
getInitialState: function() {
return {
count: 0
}
},
inc: function() {
this.setState({count: this.state.count+1})
},
render: function() {
return (
<div>
<button onClick={this.inc}>inc</button>
<div>count:{this.state.count}</div>
</div>
)
}
});
var App = React.createClass({
getInitialState: function() {
return {
show: true,
component: <StatefulView/>
}
},
toggle: function() {
this.setState({show: !this.state.show})
},
render: function() {
var content = this.state.show ? this.state.component : false
return (
<div>
<button onClick={this.toggle}>toggle</button>
{content}
</div>
)
}
});
这显然不起作用,每次切换都会创建一个新的<StatefulView>。
这是JSFiddle。
有没有办法在卸载后挂在同一个组件上以便重新安装它?
【问题讨论】:
-
您可以使用 Flux 将状态存储在 Store 中
-
是的,我试图没有保存/加载方法。此外,这对我来说可能会变得棘手。在 UINavigationController 的上下文中考虑这一点——我可能有多个完全相同的组件,但具有不同的状态,在导航堆栈的不同级别......
标签: javascript reactjs