为什么setState清空状态对象而不是删除它?

时间:2018-01-14 23:28:48

标签: javascript reactjs null undefined

在注销方法中,我试图将状态值设置为null。

this.setState({
  activeUser: null
});

然后,在我的渲染中,我正在检查if(!this.state.activeUser)。但是,在第一次调用setState时,它只是清空activeUser对象。 activeUser: {}。我可以重复一下这个电话:

this.setState({
  activeUser: null
});

然后删除activeUser属性,但这感觉就像一个黑客。我不确定我是否遇到了语言问题或反应问题。我宁愿不改变渲染检查,但也许这就是答案。

// No, thank you.
if (!this.state.activeUser || typeof(this.state.activeUser) === 'undefined')

1 个答案:

答案 0 :(得分:2)

  

然后删除activeUser属性

不,它不是删除属性,只是将其值设置为null。要删除属性本身,您应该使用delete

delete this.state.activeUser;

然而,这很糟糕,因为它改变了状态。考虑使用像immutability helpers这样的库。