reactjs 无法在控制台上修复此错误消息“列表中的每个子项都应该有一个唯一的“键”属性,”

72qzrwbm  于 2023-02-22  发布在  React
关注(0)|答案(2)|浏览(124)

我是新来的whitreact。我总是在浏览器上看到这样的消息:“列表中的每个子元素都应该有一个唯一的“键” prop ”。我正在使用组件和Bootstrap。
我尝试了不同的方法来传递卡上的API key={values.id},但出现了问题。有人能帮我吗?

import React, { useState, useEffect } from 'react';

function Home() {

    const [fake, setFake] = useState([]);
    console.log(fake);
    useEffect(() => {
        fakestore();
    }, [])

    const fakestore = async () => {
        const response = await
            fetch('https://api.escuelajs.co/api/v1/products');

        const jsonData = await response.json();

        setFake(jsonData);
    }
    return (
        <>

        <div className='container'>
            <div className='row mt-5'>
                {fake.map((values) => {
                    return (
                        <>
                            
                            <div className='col-12 col-md-6 col-lg-4 mt-5'>
                                <div className="card" key={values.id}>
                                    <img src={values.images} className="card-img-top w-100" alt={values.description} />
                                    <div className="card-body">
                                        <h5  className="card-title">{values.title}</h5>
                                        <p className="card-text">{values.description}</p>
                                        <p className="card-text"><strong>€ {values.price.toFixed(2)}</strong></p>
                                        <button className="btn btn-primary">Add to Wishlist </button>
                                    </div>
                                </div>
                            </div>
                            
                        </>
                    )

                })}
            </div>
        </div>
        </>
    );
}

export default Home;

谢谢
希望修复浏览器上的错误信息。

brgchamk

brgchamk1#

密钥需要连接到Map中的最高父节点:
另外,这里不需要碎片,所以我将其删除

{fake.map((values) => (
              <div key={values.id} className='col-12 col-md-6 col-lg-4 mt-5'>
                <div className='card'>
                  <img src={values.images} className='card-img-top w-100' alt={values.description} />
                  <div className='card-body'>
                    <h5 className='card-title'>{values.title}</h5>
                    <p className='card-text'>{values.description}</p>
                    <p className='card-text'>
                      <strong>€ {values.price.toFixed(2)}</strong>
                    </p>
                    <button className='btn btn-primary'>Add to Wishlist </button>
                  </div>
                </div>
              </div>
            ))}
w6mmgewl

w6mmgewl2#

作为@pacifica94 said above,“key“prop需要放置在map()内的元素/组件的最外层 Package 器中,换句话说,它是map()内的直接元素/组件。
这里需要注意的是,key是一个特殊的属性,你可以在任何组件中添加它。如果你希望 Package 器是一个React片段(<></>),你也可以像这样添加key:

<React.Fragment key={...}>
  // code here...
</React.Fragment>

希望这能有所帮助!

相关问题