开发者问题收集

显然没有导致错误“TypeError:无法读取未定义的属性”的原因

2022-01-26
548

我必须在布局中显示从数据库中获取的一些数据。这是我用来获取数据的代码:

    const [array, setArray] = useState([])
    const collectionRef = collection(db, "Collection")
    const q = query(collectionRef, orderBy("Order", "desc"))

    useEffect(() => {
      auth.onAuthStateChanged(function (user) {
      if (user) {
             onSnapshot(q, (data) =>
             setArray(data.docs.map((doc) => ({ ...doc.data(), id: doc.id })))
         );
      }
    })
   }, [auth]);

下面是 html

    <div> 
        <h2>{array[0].Name}</h2>
    </div>

最让我困惑的是,错误并不总是出现,有时一切正常,有时它会无缘无故地停止工作。如果我对数组执行 console.log,有时它会打印数据并且一切正常,有时它会打印一个空数组并且什么也不做。 我声明该数组从未被修改过,它是在代码开头加载的,并且仅读取数据。

1个回答

array 在第一次渲染时为空,在返回数据之前,所有其他渲染也是如此。尝试类似:

<div> 
    <h2>{array.length && array[0].Name}</h2>
</div>
assembler
2022-01-26