React Native 检查状态对象是否为空

kgsdhlau  于 2022-11-25  发布在  React
关注(0)|答案(5)|浏览(255)

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

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

cygmwpex1#

假设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的所有键。然后,您可以检查该数组的长度,以确定它是否为空对象。

vybvopom

vybvopom2#

实际上,您需要首先检查this.state.errors是否存在,然后检查对象是否为null

if (this.state.errors && !Object.keys(this.state.errors)) {
    this.props.updateUser(user);
    this.props.navigation.goBack();
}
oknwwptz

oknwwptz3#

尝试检查状态而不是错误集合:

if (this.state) {
    this.props.updateUser(user);
    this.props.navigation.goBack();
}
  • 干杯 *
guicsvcw

guicsvcw4#

你可能需要这样做。

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
4sup72z8

4sup72z85#

--如果是数组

if(!this.state?.example?.length)  //ES 6 and above

--如果是Object

if(!Object.entries(this.state?.example).length)

相关问题