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


但是,这很不好,因为它会更改状态。考虑使用像不变性助手之类的库。

10-06 12:28