所以我有一些值的状态数组,它说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/

10-13 05:41