首页 > 解决方案 > undefined 不是状态数组中的对象,试图找到状态数组长度

问题描述

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

标签: javascriptreactjsfirebasereact-native

解决方案


使用箭头函数来克服当前上下文这个问题。

像下面..

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

推荐阅读