我从 React Native 项目中休息了大约 3 周,现在我回来了,想继续研究它,不幸的是,该应用程序甚至没有渲染第一个屏幕组件。我已经弄清楚问题是什么了,我只是完全混淆了正在发生的事情:
var chatkeys = [];
var partnerkeys = [];
var contactsDATA = [];
await firebase.database().
ref(`users/${PersonalId}/chats`).
once('value').
then(snapshot =>{
for (i in snapshot.val()){//pulling all chatcodes out of database and pushing into chatkeys
chatkeys.push(snapshot.val()[i]);
};
});
问题出在for循环中。这是我收到的错误:
<块引用>[未处理的承诺拒绝:ReferenceError:找不到变量:i]
JS怎么找不到变量“i”?我从来没有告诉 JS 搜索“i”——它应该是一个循环遍历整个 snapshot.val() 数组的计数器。这是怎么回事?
答案 0 :(得分:0)
错误指出 i
未定义。阅读您的代码,我可以看到您的 for 循环声明中的 i
可能缺少 let i
变量。
你试过for (let i in snapshot.val()){
答案 1 :(得分:-1)
i
未在作用域中声明。
试试
for (let i in snapshot.val()){//pulling all chatcodes out of database and pushing into chatkeys
chatkeys.push(snapshot.val()[i]);
};
或
let i;
for (i in snapshot.val()){//pulling all chatcodes out of database and pushing into chatkeys
chatkeys.push(snapshot.val()[i]);
};
答案 2 :(得分:-2)
错误指出 i
未在缺少 let i
变量的 for 循环声明中定义。这是将所有对象键推送到聊天键数组的另一个示例。
var chatkeys = [];
var partnerkeys = [];
var contactsDATA = [];
firebase.database().ref(`users/${PersonalId}/chats`).once('value').then(snapshot =>{
const chatKeys = Object.keys(snapshot.val())
});