这是我第一次使用react expo,我想返回数组以基于该数组创建动态组件,但是我的函数没有返回。下面是我的代码:
getgroups = () => {
// getting data once
var arraykey = [];
var returnarry = [];
returnarry = firebase
.database()
.ref('/groupsOfUser/' + this.state.uid)
.once('value')
.then(snapshot => {
snapshot.forEach(function(childSnapshot) {
var childKey = childSnapshot.key;
console.log(childKey);
arraykey.push(childKey);
});
console.log(arraykey);
return arraykey;
});
console.log('return:' + returnarry[0]);
}
}
returnarry
不包含任何内容。这是我在控制台登录时得到的结果
返回:未定义
请帮助!
答案 0 :(得分:0)
使其具有异步功能。在文档上,它返回一个承诺,因此必须等待它。
getgroups = async()=> {
然后
returnarry = await firebase
.database()
答案 1 :(得分:0)
JS代码执行是异步的。火力地堡获取可能需要一些时间。
您可以使用async方法来处理此问题。使您的方法异步,如下所示。
getgroups = async() => {
// getting data once
var arraykey = [];
var returnarry = [];
returnarry = await firebase
.database()
.ref('/groupsOfUser/' + this.state.uid)
.once('value')
.then(snapshot => {
snapshot.forEach(function(childSnapshot) {
var childKey = childSnapshot.key;
console.log(childKey);
arraykey.push(childKey);
});
console.log(arraykey);
return arraykey;
});
}
console.log('return:' + returnarry[0]);
return returnarry;
}