我有一个反应js状态对象,并且如果对象为空则想执行一些代码。我的逻辑是否有问题,因为if块中的代码没有被执行。
if (this.state.errors == null) {
this.props.updateUser(user);
this.props.navigation.goBack();
}
答案 0 :(得分:1)
鉴于this.state.errors
是一个对象,你可以这样做,
//when this.state.errors object is empty
if (Object.keys(this.state.errors).length == 0) {
this.props.updateUser(user);
this.props.navigation.goBack();
}
Object.keys
将返回对象this.state.errors
中的数组或所有键。然后,您可以检查该数组的长度,以确定它是否为空对象。
答案 1 :(得分:0)
尝试检查状态而不是错误集合:
if (this.state) {
this.props.updateUser(user);
this.props.navigation.goBack();
}
欢呼声
答案 2 :(得分:0)
实际上,您需要先检查this.state.errors
是否存在,然后对象是null
还是
if (this.state.errors && !Object.keys(this.state.errors)) {
this.props.updateUser(user);
this.props.navigation.goBack();
}
答案 3 :(得分:0)
您可能需要这样做。
if (this.state && !this.state.errors) {
this.props.updateUser(user);
this.props.navigation.goBack();
}
当您访问另一个对象中的对象值时,您可能想检查父对象是否存在。如果对象this.state
为null
或undefined
,则只会引发控制台错误。
Uncaught TypeError: Cannot read property 'errors' of undefined
at <anonymous>:1:15
答案 4 :(得分:0)
如果它是一个数组对象
if(this.state.example[0]) OR if(this.state.example[0]) *// ES 6 and above*
否则为对象容器
if(Object.keys(this.state.example.length == 0)