这是我在React中的代码。我有多个getInitialState
实例用于不同的功能。但是,我发现让它们全部以这种方式运行可能会出现问题。
getInitialState: function(){
if (localStorage.getItem('something'))
{return {signedin: true}}
else {return {signedin: false}}
},
getInitialState:function(){
return {error: true}
},
getInitialState:function(){
return {fliphouse: false}
},
要解释一下,getInitialState
的第二个实例不可行。也就是说,除非我翻转第二个和第三个getInitialState
的顺序。当我这样做时,代码运行应该。但我觉得React试图告诉我一些事情。
这通常是在组件中组织React代码的方法吗?
答案 0 :(得分:3)
您可以在同一个对象中定义它们:
getInitialState() {
return {
signedIn: !!localStorage.getItem('something'),
error: false,
fliphouse: false
};
}
您可以在组件中的任何位置单独更改它们(render()函数除外),例如:
this.setState({ error: true }) // causes a new render
答案 1 :(得分:1)
这不是放置组件初始状态的正确方法。组件即将挂载时,只调用一次初始状态函数;在这里你设置组件的状态(你需要什么变量或对象属性),然后在其他方法如componentDidMount等中使用setState相应地更新它们。
所以在你的问题中我会说在状态对象中放入所有3个变量signedIn,error和fliphouse然后更新这个对象。所以只需要一个initialState函数。