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



在注销方法中,我尝试将状态值设置为 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')

然后删除activeUser属性

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

delete this.state.activeUser;

但是,这很糟糕,因为它会改变状态。考虑使用像不可变性帮助程序这样的库。

相关内容

  • 没有找到相关文章

最新更新