import Card from 'react-bootstrap/Card';
import Button from 'react-bootstrap/Button';
import {collection, getDocs, doc} from "firebase/firestore"
import {db} from "../firebaseConfig/firebase"
import React, { useState, useEffect } from "react";
const Cards = () =>{
const [products, setProducts] = useState([])
const productsCollection = collection (db,"zproducts")
const getProducts = async ()=>
{
const data = await getDocs (productsCollection)
setProducts(data.docs.map((doc)=>({...doc.data(),id:doc.id})))
}
console.log(products)
useEffect(() => {
getProducts();
}, []);
return(
<>
{products.map((product)=> {
<div key={product.id}>
<p>{product.name}</p>
</div>
})}
<Card style={{ width: '18rem' }}>
<Card.Img variant="top" src="holder.js/100px180" />
<Card.Body>
<Card.Title>Card Title</Card.Title>
<Card.Text>
Some quick example text to build on the card title and make up the
bulk of the card's content.
</Card.Text>
<Button variant="primary">Go somewhere</Button>
</Card.Body>
</Card>
</>
)
}
export default Cards
好的,当我尝试创建一个p标记渲染www.example.com时product.name,它没有渲染,它应该渲染在引导卡旁边,但由于某种原因什么也没有发生。
When I do a console log the array from firestore does appear, but if I do for example console.log(products.name) I get undefined as a result on console
2条答案
按热度按时间bvjveswy1#
我想你忘了Map上的回报:
您还可以:
brccelvz2#
问题是
Firestore
getDocs()
结果没有.map
方法。我遇到了同样的问题,最终使用.forEach
方法:(This对于在输出DOM
React
.map迭代器上设置undefined
键的人来说仍然是相关的。)根据您的屏幕截图,您的任何对象中似乎都没有设置
id
属性。如果没有id
,则此部分可能存在渲染问题,因为您的key
是undefined
。