检查状态对象是否为空

时间:2018-01-20 06:50:31

标签: javascript react-native

我有一个反应js状态对象,并且如果对象为空则想执行一些代码。我的逻辑是否有问题,因为if块中的代码没有被执行。

if (this.state.errors == null) {
  this.props.updateUser(user);
  this.props.navigation.goBack();
}

5 个答案:

答案 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.statenullundefined,则只会引发控制台错误。

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)