在React Native中获取数组的长度时,“无法读取未定义的属性'length'的长度”

时间:2019-08-12 06:41:16

标签: javascript firebase react-native

我成功导出了一个函数,该函数返回一个数组,并从另一个JavaScript文件中调用该函数。当我尝试获取数组的长度时,会引发此错误

  

无法读取未定义的属性“ length”

我通过使用console.log(ModelItems)验证了数组不为空。

当我使用如下所示的硬编码数组时,错误未显示

var ModelItems = [{name: "bla"},{name: "blaBla"},]

_getListItems()函数通过将上述数组作为参数来调用_constructListArrayModel中的app.js函数。 _constructListArrayModel函数尝试获取数组的长度,但引发上述错误。

我只想获取数组的长度才能运行for循环。

//ModelItems.js that exports the array

module.exports = {
  getModelArray: function(uid) {
    firebase.database().ref('ArArray').child(uid).once('value').then(function(snapshot){
      const exists = (snapshot.val() !== null)
      data = snapshot.val()
      var ModelItems = []
      for(var obj in data){
        ModelItems.push({
          name: data.name,
          selected: false,
          loading: LoadingConstants.NONE,
          icon_img: data.icon_img,
          obj: data.obj,
          materials: null,
          animation:{name:"01", delay:0, loop:true, run:true},
          scale: [0.2, 0.2, 0.2],
          position : [0, 5*0.05, 10],
          type : "OBJ",
          physics: undefined,
          ref_pointer: undefined,
          shadow_width: 60.5,
          shadow_height: 60.5,
          spotlight_position_y: 100,
          lighting_mode: "IBL",
      })
      }
      console.log(ModelItems)
      return ModelItems
    })
  }
}
// app.js that calls the function

_getListItems() {
  if(this.props.listMode == UIConstants.LIST_MODE_MODEL){
    return this._constructListArrayModel(ModelData.getModelArray(firebase.auth().currentUser.uid), this.props.modelItems);
  }
  else
  {
   return null
  }
} 

// 

_constructListArrayModel(sourceArray, items) {
    var listArrayModel = [];
    for(var i =0; i<sourceArray.length; i++) {
        listArrayModel.push({icon_img:sourceArray[i].icon_img, loading:this._getLoadingforModelIndex(i, items)})
    }
  return listArrayModel;
}


0 个答案:

没有答案