未定义不是状态数组中的对象,试图查找状态数组的长度

时间:2018-10-05 05:48:09

标签: javascript reactjs firebase react-native

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

1 个答案:

答案 0 :(得分:2)

使用箭头功能可以克服当前上下文中的这一问题。

如下所示。

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);
    }
  }
});