所以我有一些值的状态数组,它说undefined不是对象(评估this.state.unavailable)。我不确定自己在做什么错。
firebase.database().ref('recipes').orderByChild('custard'). equalTo(0).once('child_added', function(snapshot) {
var variable = snapshot.val();
var i;
for (i = 0; i < this.state.unavailable.length; i++){
if (variable.unavailable[i] == 0) {
console.log(variable);
}
}
});
一切开始的地方
constructor() {
super()
this.state = {
refreshing: false,
checked: false,
one: false,
two: false,
three: false,
four: false,
five: false,
six: false,
seven: false,
eight: false,
nine: false,
key: 1,
list: [],
unavailable: []
}
}
最佳答案
使用箭头功能可以克服当前上下文中的这个问题。
像下面一样
firebase.database().ref('recipes').orderByChild('custard'). equalTo(0).once('child_added', (snapshot) => {
var variable = snapshot.val();
var i;
for (i = 0; i < this.state.unavailable.length; i++){
if (variable.unavailable[i] == 0) {
console.log(variable);
}
}
});
或像下面这样在代码块上方增加一个变量。
var self= this;
firebase.database().ref('recipes').orderByChild('custard'). equalTo(0).once('child_added', function(snapshot) {
var variable = snapshot.val();
var i;
for (i = 0; i < self.state.unavailable.length; i++){
if (variable.unavailable[i] == 0) {
console.log(variable);
}
}
});
关于javascript - 未定义不是状态数组中的对象,试图查找状态数组的长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52659053/