【问题标题】:make array data of objects in usestate() showing in html react使在 html 中显示的 usestate() 中的对象的数组数据反应
【发布时间】:2021-10-23 12:26:03
【问题描述】:

你们能帮帮我吗?我是新手学习反应。我有一个这样的反应页面。我已经制作了一个数据并将它们放在 useate() 中。你们能帮我制作以html显示的数组数据吗?我只是在学习 useState 函数。

import React, {useState}  from 'react';
import './Soal2.css';
import hamburger from './products/humburger.jpg';
import kimchi from './products/kimchi.jpg';
import topokki from './products/topokki.jpg'
import sushi from './products/sushi.jpg';

function Soal2() {

  const [listProducts, setListProducts] = useState([{
    menu: 'Humburger',
    gambar: {hamburger},
    harga: 10000
  },
  {
  menu: 'Kimchi',
  image: {kimchi},
  harga: 15000
  },
  {
  menu: 'Topokki',
  gambar: {topokki},
  harga: 20000
  },
  {
  menu: 'Sushi',
  gambar: {sushi},
  harga: 25000
  }])



    return (
  </div>  ---> array data showing up here
      </div>
    );
  }
  
  export default Soal2; 

要求是 const [listProducts, setListProducts] 和 useState([array of objects]) 不允许擦除。请帮帮我:(

我所做的只是像这样创建新的组件文件名 productitem.js:

function ProductItem(listProducts) {
return (
  <div>
      {listProducts}
  </div>
);

}

导出默认 ProductItem;

然后我将返回代码以使数组数据显示在 html 中:

{listProducts.map((item, index) => {
    return <ProductItem value={item} key={index}/>
  })}

但代码错误。有类似的东西:对象作为反应子无效(找到:带有键 {value} 的对象),bla bla ---> 错误代码

【问题讨论】:

标签: reactjs use-state


【解决方案1】:

很抱歉没有完全理解您想要达到的目标。如果要在组件中显示数据,您可以这样做:

return (
   <div>
   {listProducts.map((item) => {
        <div>
            <p>item.menu</p>
            ...otherProps        
        </div>
    })
    }
   </div>
)

如果这不是您想要做的,请更具体地帮助您,谢谢!

【讨论】:

  • 哦,在您将信息传递到的组件上,您有它以便它可以带孩子吗?如果没有,那就这样做吧,这就是它给你带来的问题。就这样做 ``` const myComponent = ({ children }) => { return (
    { children }
    ) } export default myComponent; ```
  • 是的,productItem.js 应该能够渲染那些孩子,但除非你告诉它,否则它不会。请分享它的代码。
  • 我试过这样,但预期错误',': const ProductItem({listProducts}) => { return (
    {listProducts}
    )} export default ProductItem;我该怎么办?
  • 应该是这样的 const ProductItem = ({ listProducts }) => {} 箭头函数的语法,如果是这样的话,你得到了什么错误?
  • 我忘记使用相等 =。现在数组数据仍然没有显示,但错误消失了。当我尝试更改 listproperties.menu 时。错误是无法读取未定义的属性“菜单”。我该怎么办?
【解决方案2】:

只需使用映射来迭代 listProducts 数组:

return <div>
  listProducts.map((product, index) => {
    const key = `product-${product.menu}-${index}`

    return <div key={key}>
      <img src={product.gambar} />
      <span>{product.menu}</span>
      <span>{product.harga}</span>
    </div>
  })
</div>

【讨论】:

  • 我试过你的代码,但图片没有显示。为什么?
  • product.gambar 似乎是一个对象,因此您需要更改它,例如: gambar: {hamburger} 可能是 gambar: hamburger ,其他相同: gambar: sushi gambar: topokki using像这样的 gambar:{hamburger} 使项目成为一个对象
猜你喜欢
  • 2021-02-07
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 2022-01-05
  • 2020-08-16
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多