javascript - 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: []
}
}
解决方案
使用箭头函数来克服当前上下文这个问题。
像下面..
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);
}
}
});
推荐阅读
- java - tkinter python程序可以镜像到android应用程序上吗
- python - 修改CustomUser模型的字段顺序
- jquery - 检测音频何时将在 Jquery 中结束
- datetime - Flutter - 将分钟转换为 H:M
- android - 从 .gradle 和 .idea 中删除所有内容是否安全?
- tampermonkey - Tampermonkey 的“存储”选项卡在哪里编辑存储内容?
- ruby - 尝试在 Ruby 中复制移动应用程序 POST 请求,出现 502 网关错误
- c++ - 正在跳过 cin 并且 cin.ignore 不起作用
- javascript - 使用 Javascript 更改类的 CSS 样式
- asp.net-core - 如何使用实体框架核心更新与普通 SQL 更新查询相同的多条记录列表?