我正在使用google books API构建一个应用程序,我似乎正在向列表中的每个子元素传递一个唯一的密钥,但错误不会消失.我一定是做错了什么,但我不确定是什么.

const BookList = (props) => {

//map over all of the book items to create a new card for each one in 
the list
    const books = props.books.data.items.map((book) => { 
        console.log(book.id)
        return (
            <div className="col col-lg-4 grid-wrapper">
                <BookCard 
                    key={book.id}
                    image={book.volumeInfo.imageLinks.thumbnail}
                    title={book.volumeInfo.title} 
                    author={book.volumeInfo.authors[0]} 
                    description={book.volumeInfo.description}
                    previewLink={book.volumeInfo.previewLink}
                    buyLink={book.saleInfo.buyLink}
                />
            </div>
        ); 
    })

    return (
        <div>{books}</div>
    );
}

注意,在const books中返回后,我有一个控制台.日志(log)(book.id),它将在控制台中显示所有10个唯一的id键.但是当我试图使用key={book.id}将它传递给这个组件的子组件时,我得到了这个错误.

推荐答案

key需要放在最外面的返回元素上.在您的具体情况下,这意味着要改变这一点:

            <div className="col col-lg-4 grid-wrapper">
                <BookCard 
                    key={book.id}

为此:

            <div className="col col-lg-4 grid-wrapper" key={book.id}>
                <BookCard 

Reactjs相关问答推荐

如何实现黑暗模式 map ?

在迁移到Redux—Toolkit 2.0和Redux5.0之后,我在extraReducer和Slice方面有点挣扎,

Formik验证不适用于物料UI自动完成

将动态元素中的输入数据传输到Reaction

导致useState中断的中断模式

每次单击按钮时,Reaction组件都会重新生成

如何在NextJS中仅在刷新页面和页面淡出页面过渡时添加全屏加载器

React,当我调用handleSubmit()函数时,我正在将application/json和multiform/data中的数据发送到后端,但student_image中没有数据:null

使用Next.js和Next-intl重写区域设置

UseEffect 似乎不适用于页面的首次渲染

Material-UI 和 React Hook 表单不记录值

尽管所有页面在 Reactjs 中都是公开的,但始终导航到特定页面

无法通过 fetch 获取数据到上下文中

如何在 ChartJS 中创建此图表?在 NEXTjs 和 TSX 中

为什么 setState 在 React 中不是异步的?

在 React 的父级中多次调用子级时从子级获取数据到父级

无法读取未定义的react native 的属性参数

React Router 6.4CreateBrowserRouter子元素不显示

React Router v6 - 访问嵌套路由和处理手写 url 的正确方法

如何从一组对象映射 MUI 5 图标并更改其 colored颜色 ?