如何解决从内部函数作用域更新数组的值,然后在Js中返回它们?
在此 Filtered React.js 组件中,我正在使用数组(“ foofy”)的值应用于用于过滤{{{1 }} 方法。数组应使用Firebase数据库中的条目填充,因此map()
和filter()
以上的功能:
map()
问题是我不明白如何才能在其自身的功能范围之外获取更新后的数组。有人有主意吗?
谢谢! ?
解决方法
基本上,由于发出了网络请求,因此代码是异步的。因此,我建议让加载程序显示何时获取数据,然后一旦数据从Firebase到达,就可以删除加载程序并显示数据。上面的示例实现可能如下所示,
function Filtered () {
const [foofy,setFoofy] = React.useState([]);
const [loading,setLoading] = React.useState(true);
alertMyAnsweredQuizzes()
function alertMyAnsweredQuizzes () {
var user = firebase.auth().currentUser;
if (user !== null) {
const userId = user.uid
const ref = firebase.database().ref('users (uid)/'+ userId);
ref.on("value",(snapshot) => {
const keys = [];
snapshot.forEach(function(childSnapshot) {
var key = childSnapshot.key;
keys.push(key);
});
setFoofy(keys);
setLoading(false);
})
}
else {
// Code for login.
}
}
if (loading) {
return <h1>Loading....</h1>
}
return (
foofy.filter((list) =>
foofy.name == foofy[0] //should update by the function
|| foofy.name == foofy[1]
|| foofy.name == foofy[2]
|| foofy.name == foofy[3]
|| foofy.name == foofy[4]
|| foofy.name == foofy[5]
).map((list) => (
<Link>
{foofy.name}
</Link>
)
)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。