如何在Reactjs中拥有多个getInitialState实例?

时间:2016-07-12 02:44:25

标签: javascript reactjs

这是我在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代码的方法吗?

2 个答案:

答案 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函数。