javascript - 记录数据但不渲染 p 标签,为什么?
问题描述
我正在使用firebase firestore并且我获取了数据,一切正常,但是当我将它传递给某个组件时,只有一个项目被传递,但日志正确显示了所有元素。我刚刚开始学习 react ,感谢任何帮助。
import React, { useEffect, useState } from 'react'
import { auth, provider, db } from './firebase';
import DataCard from './DataCard'
function Explore() {
const [equipmentList, setEquipments] = useState([]);
const fetchData = async () => {
const res = db.collection('Available');
const data = await res.get();
data.docs.forEach(item => {
setEquipments([...equipmentList, item.data()]);
})
}
useEffect(() => {
fetchData();
}, [])
equipmentList.forEach(item => {
//console.log(item.description);
})
const dataJSX =
<>
{
equipmentList.map(eq => (
<div key={eq.uid}>
{console.log(eq.equipment)}
<p>{eq.equipment}</p>
</div>
))
}
</>
return (
<>
{dataJSX}
</>
)
}
export default Explore
解决方案
您在将获取的数据设置为状态时遇到问题。
您需要在setEquipments
准备好数据时调用一次,因为您总是用一个初始数组加上一个来自 forEach 的项目来擦除它。
设置设备的正确代码是
const fetchData = async () => {
const res = db.collection('Available');
const data = await res.get();
setEquipments(data.docs.map(item => item.data()))
}
推荐阅读
- python - 在不消耗大量内存的情况下将 CSV 转换为 XLS
- c# - 如何模拟 User.Identity
- django - 按不同模型对象列表过滤 GenericForeignKey
- python - 如何让ursina检测python中的shift键?
- javascript - 如何防止 iframe 的 MutationObserver 的隐藏和显示闪烁
- mongodb - Mongo 聚合结果为 0
- java - 按名称在列表中搜索班级
- woocommerce - WOOF - 将产品类别过滤器下拉菜单设为默认
- elasticsearch - 具有字符串和数字值的 .keyword 字段的最大聚合
- c# - C# HttpWebRequest vs HttpClient vs RestSharp