我期待来自远程服务器的一些数据在屏幕上显示但是我在模拟器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']
访问该值时会导致错误(读取属性未定义)
那么如何处理这个问题呢?
答案 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---'