reactjs - firebase中usestate保存数据的问题
问题描述
我有一个我无法解决的问题尝试一千种方法却一无所获
我碰巧显示
我生成一个状态:
const [totalComidas, setTotalComidas] = useState({})
之后我做了一个useEffect从firebase给我带来数据,我想将它保存在状态但它保存为空
useEffect(() => {
const resultadoComidas = []
db.collection('menu semanal')
.get()
.then((snap) => {
snap.forEach((doc) => {
const comida = doc.data()
// comida.id = doc.id
resultadoComidas.push(comida)
console.log(resultadoComidas[0])
})
setTotalComidas(resultadoComidas)
console.log(totalComidas)
})
}, [])
这些是我在控制台中的结果
控制台中的第一个结果是在将其添加到状态之前,第二个是新状态,这对我来说似乎很奇怪,因为它正确地带来了数据,但是当我将它分配给状态时,它分配给我的是空的。
解决方案
totalComidas
当您将其记录在里面时,它为空是正常的,useEffect
因为您的结果setTotalComidas
不会显示在那个特定的useEffect
. 如果你想看到你的变化,totalComidas
你需要另一个useEffect
这样的
useEffect(() => {
console.log(totalComidas)
})
如果您想知道为什么会这样,请阅读此内容。它解释了行为useEffect
推荐阅读
- javascript - 如何在 1 个函数调用中为进度条返回两个百分比值?
- python - 在 python CheckListCtrl 上加载具有透明度的图像
- voip - 在 kamailio 中使用 TSILO 模块进行并行分叉
- r - 专门用小时/分钟/秒过滤 - R
- swift - Swift 中的 Firebase:密码重置电子邮件尝试未发送给用户
- java - Java - Cucumber - 宁静报告 - 忽略测试
- c# - itextsharp : 如何使用 ColorSpaceStroke 和 ColorSpaceFill 找到填充和描边颜色?
- flutter - 容器内可移动和可缩放的网格视图
- sqlite - 将 BLOB 从 CSV 导入 SQLite 表
- r - 在 sqldf::read.csv.sql() 之后关闭未使用的连接