在注销方法中,我尝试将状态值设置为 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;
但是,这很糟糕,因为它会改变状态。考虑使用像不可变性帮助程序这样的库。