【发布时间】:2020-12-20 22:09:10
【问题描述】:
在这个 Filtered React.js 组件中,我使用数组(“foofy”)的值应用到用于过滤 map() 的返回语句中方法。该数组应由 Firebase 数据库中的条目填充,因此上面的函数 filter() 和 map():
function Filtered () {
let foofy = []
alertMyAnsweredQuizzes()
function alertMyAnsweredQuizzes () {
var user = firebase.auth().currentUser;
if (user !== null) {
const userId = user.uid
let ref = firebase.database().ref('users (uid)/'+ userId);
ref.on("value", function(snapshot) { // it does not get out from here!
snapshot.forEach(function(childSnapshot) {
var key = childSnapshot.key;
foofy.push(key)
});
alert(foofy)
// foofy arrays should go outside into the return statement
document.getElementById('myDiv').innerHTML += `==========`
})
}
else {
document.getElementById('myDiv').innerHTML = `sign in to view your answered quizzes`
}
}
return (
list.filter((list) =>
list.name == foofy[0] //should update by the function
|| list.name == foofy[1]
|| list.name == foofy[2]
|| list.name == foofy[3]
|| list.name == foofy[4]
|| list.name == foofy[5]
).map((list) =>
<Link>
{list.name}
</Link>
)
)
}
问题是我不明白如何在它自己的函数范围之外获取更新的数组。有人有想法吗?
谢谢! ????
【问题讨论】:
-
... list.filter((list) ...是列表列表吗? -
几乎没有充分的理由在使用 react 时手动设置
innerHTML。这是 React 的责任。请改用条件渲染或其他方法。
标签: javascript arrays reactjs components