呈现对象数组的对象ReactJs

iyr7buue  于 2022-11-04  发布在  React
关注(0)|答案(1)|浏览(204)

我是来自多个firestore集合的对象数组,并将它们存储在一个对象中。我想呈现数组中的单个对象。这是我获取数据的方法:

const categories = {
    Pakoras: [],
    Vegitarisches: [],
    "Biryani Gerichte": [],
    Hähnchengerichte: [],
    "Indische Beilagen": [],
    Lammgerichte: [],
    "Ben & Jerrys": [],
    Getränke: [],
    Pizza: [],
    Kindermenüs: [],
    Spaghetti: [],
    Tortellini: [],
    Gnochi: [],
    Maccheroni: [],
    Tagliatelle: [],
    "Überbackene Nudeln": [],
    Salate: [],
    Fleischgerichte: [],
    "Schnitzel & Fleischgerichte": [],
    Risotto: [],
    "Überbackenes-Gemüse-Kartoffeln": [],
    "Chinesische-Gerichte-Gebratene-Nudeln-Reis": [],
  }
   const [foods, setFoods] = useState(categories)
  useEffect(() => {
    fetch()
  }, [])
  function fetch(){
      console.log("Fetching")
      Object.keys(categories).forEach(category => {
        fire.firestore().collection(category).get()
          .then(snapshot => {
            var food = []
            snapshot.forEach(doc => {
              food.push(doc.data())
              //console.log(doc.data())
            })
            categories[category] = food;
          }).catch(error => {
            console.log(error)
          })
      })
      //console.log(foods)
    }

doc.data()对象看起来如下所示:

var example = {
        title: "example",
        price: 10,
        desc: "none"
    }

对象在各自类别下的数组中。我该如何呈现它呢?我想循环遍历所有对象,并像这样呈现它:
类别1:

  • 标题-价格-说明
  • 标题-价格-说明

第2类:

  • 标题-价格-说明
  • 标题-价格-说明
uqcuzwp8

uqcuzwp81#

Object.entries(categories)将允许您从对象中迭代键/值对数组。
在您的例子中,key将是 * 类别 *,而value将是该类别中的 * 食物数组 *。

Object.entries(categories).map(([category, foods]) => {
  return (
    <div key={category}>
      <h1>{category}</h1>
      <ul>
        { foods.map(food => (
            <li key={food.title}>
               {food.title} - {food.price} - {food.desc}
            </li>
        )}
      </ul>
    </div>
  )
})

相关问题