const [dataIn, setDataIn] = useState<skillData[] | any>([]);
console.log("event loop");
if(dataIn.length === 0) {
console.log("updating data");
const db = getFirestore(firebaseApp);
const tempData : any = [];
const data = await getDocs(collection(db, "MainWebsiteSkillsData"))
data.forEach(elm => {
tempData.push({...elm.data(), key : elm.id});
});
setDataIn(tempData);
} else {
console.log("data already updated");
}
所以,我试图从firestore获取一些数据,并将其转换为数组并保存到状态,但所有的实现都会导致不同的问题。
像这样直接添加它会导致一个无限循环,而将它添加到useEffect块中不会更新状态。
无论哪种方式,有没有办法做到这一点,而不会导致无限循环?为什么国家没有更新?我读到一些关于每次重新渲染的闭包不一样的东西,但我使用了一个const变量来确保它持续存在。我甚至使用了其他线程建议的临时变量,但状态仍然没有更新。
1条答案
按热度按时间osh3o9ms1#
我会创建一个firebaseApp.ts来存储所有初始数据。
我不会使用任何类型。
获取数据