反应原生如何处理无法阅读财产' undefined'未定义的

时间:2017-07-05 09:16:22

标签: javascript react-native undefined

我期待来自远程服务器的一些数据在屏幕上显示但是我在模拟器Cannot read property 'undefined' of undefined中得到了这个错误,原因是在结果到达之前呈现了内容,这是我遇到此错误的部分代码:

caption = { this.state.customFieldDropdown['gender'][this.state.dropDownSelectedItems['gender'] ] || '---Choose---' }

所以属性caption期待一个文本,为了处理未定义的值,我添加了这个|| '---Choose---'以显示文本'---Choose---',如果为null,但问题是{{1}是未定义的,当this.state.dropDownSelectedItems['gender']访问该值时会导致错误(读取属性未定义)

那么如何处理这个问题呢?

2 个答案:

答案 0 :(得分:1)

您似乎在属性链中的未定义值更高。 ||运算符将仅匹配链中的最后一个值,因此,如果例如this.state.customFieldDropdown['gender']未定义,则它将失败。

我建议你看看React团队介绍的idx函数。更多详情:https://facebook.github.io/react-native/blog/2017/03/13/idx-the-existential-function.html

答案 1 :(得分:0)

Idx非常好。你可以这样做:

if (idx(this.state, _ => _.customFieldDropdown.gender[_.dropDownSelectedItems.gender]))
    caption = this.state.customFieldDropdown.gender[this.state.dropDownSelectedItems.gender]
else
    caption = '---Choose---'