我有一个简单的if-else语句为
if(this.props.params.id){
//do something
}
现在,这在浏览器中可以正常工作。如果参数中有一个ID,则输入if子句,如果没有id,则不输入。
现在,当用笑话编写测试时,当未定义id时,它将引发错误:“无法读取未定义的属性'id'”为什么会发生,是否应该将其视为false?它在浏览器中工作正常,只是在测试中会引发错误。
如果id本身未定义,则您的测试将按预期工作(尽管有更好的编写方法)
您遇到的问题是来自this.props.params的未定义。在这种情况下,您尝试访问的属性不存在。
为了解决这个问题,您需要检查是否同时定义了参数和ID。
您可以这样做:
if (typeof this.props.params !== 'undefined' && this.props.params.id !== 'undefined') {
//do something
}
最好使用typeof来检查未定义的变量,因为如果变量的评估结果为false,则if语句可能会失败。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句