我有一个react js状态对象,如果对象是空的,我想执行一些代码。我的逻辑是否有问题,因为if块中的代码没有被执行。
if (this.state.errors == null) { this.props.updateUser(user); this.props.navigation.goBack(); }
cygmwpex1#
假设this.state.errors是一个对象,
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的所有键。然后,您可以检查该数组的长度,以确定它是否为空对象。
Object.keys
vybvopom2#
实际上,您需要首先检查this.state.errors是否存在,然后检查对象是否为null
null
if (this.state.errors && !Object.keys(this.state.errors)) { this.props.updateUser(user); this.props.navigation.goBack(); }
oknwwptz3#
尝试检查状态而不是错误集合:
if (this.state) { this.props.updateUser(user); this.props.navigation.goBack(); }
guicsvcw4#
你可能需要这样做。
if (this.state && !this.state.errors) { this.props.updateUser(user); this.props.navigation.goBack(); }
当你在另一个对象中访问对象的值时,你可能需要检查父对象是否存在。如果对象this.state是null或undefined,它只会抛出一个控制台错误。
this.state
undefined
Uncaught TypeError: Cannot read property 'errors' of undefined at <anonymous>:1:15
4sup72z85#
--如果是数组
if(!this.state?.example?.length) //ES 6 and above
--如果是Object
if(!Object.entries(this.state?.example).length)
5条答案
按热度按时间cygmwpex1#
假设
this.state.errors
是一个对象,Object.keys
将返回一个数组或对象this.state.errors
的所有键。然后,您可以检查该数组的长度,以确定它是否为空对象。vybvopom2#
实际上,您需要首先检查
this.state.errors
是否存在,然后检查对象是否为null
oknwwptz3#
尝试检查状态而不是错误集合:
guicsvcw4#
你可能需要这样做。
当你在另一个对象中访问对象的值时,你可能需要检查父对象是否存在。如果对象
this.state
是null
或undefined
,它只会抛出一个控制台错误。4sup72z85#
--如果是数组
--如果是Object