在reactjs中,数组或迭代器中的每个子元素都应该有一个唯一的“key”属性

2024-04-20

我完全困惑了,因为我的控制台出错了,我阅读了reactjs文档和stackoverflow上的所有提示,但我不明白问题是什么。 我看到书名列表 ({item.volumeInfo.title}),但控制台有错误。

这是我的代码:

import React, { Component } from 'react';
import { connect } from 'react-redux';

class BookList extends Component {
    renderBook(mainData) {
        return(
             <ul>
                {mainData.items.map((item, i) => {
                    return <li key={i} item={item}>{item.volumeInfo.title}</li>
                    })}
             </ul>
        )
    }

    render(){
        return (
            <div className="book-row">
                <div className="book-info">
                    {this.props.book.map(this.renderBook)}
                </div>
            </div>
        );
    }
}

function mapStateToProps({book}) {
    return {book};
}

export default connect(mapStateToProps)(BookList);

它是 API 响应的一部分:

{ "kind": "books#volumes", 
 "totalItems": 288, 
 "items": [ 
  {
   "kind": "books#volume",
   "id": "yXlOAQAAQBAJ",
   "etag": "CG7f2mQ+7Nk",
   "selfLink": "https://www.googleapis.com/books/v1/volumes/yXlOAQAAQBAJ",
   "volumeInfo": {
    "title": "Nineteenth Century Home Architecture of Iowa City",
    "subtitle": "A Silver Anniversary Edition"

我尝试执行下一个键:

键= {item.etag},键= {i},键= {item.volumeInfo.title}

但错误仍然存​​在。

请帮忙。

太感谢了。


由于您正在映射book:

{this.props.book.map(this.renderBook)}

the ul还需要一个key prop:

renderBook(mainData, bookIdx) {
        return(
             <ul key={bookIdx}>
                {mainData.items.map((item, i) => {
                    return <li key={i} item={item}>{item.volumeInfo.title}</li>
                    })}
             </ul>
        )
    }

这是因为会有很多ul兄弟姐妹和 React 需要区分(与li).

但是,最好(如果可能)使用不是数组索引的键。因此,如果book and item有一个唯一的标识符,最好使用它。

因此,看起来您在提供的示例数据之外还有另一个数组:

[
 { "kind": "books#volumes", 
   "totalItems": 288, 
   "items": [ 
    {
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在reactjs中,数组或迭代器中的每个子元素都应该有一个唯一的“key”属性 的相关文章

  • jquery/javascript setInterval

    目前我正在开发一个用户通知提醒消息功能 我设法使用setInterval控制我的 Ajax 调用 检查是否有用户的通知消息 但我的问题是我只想要通知消息 在页面上出现一次 现在它在屏幕上显示多个通知警报消息 我知道你可以使用setTimeo
  • 在 ES6 Node.js 中导入“.json”扩展名会引发错误

    我们正在尝试使用 Node js 导出和导入 ES6 模块的新方法 对于我们来说 从package json文件 下面的代码应该做到这一点 import name version from package json 但是 执行时会抛出以下错
  • JS Facebook登录iOS8

    我的 facebook 应用程序上的登录按钮在 iOS 8 中完全停止工作 我以为这是我所做的事情 但是当我从他们的网站获取 facebook 示例 html 并将其应用到我的页面时 它仍然不起作用 我的应用程序 ID 已被替换 与 xxx
  • 如何绑定国家/地区更改国际电话输入

    我使用国家代码插件名称国际电话输入 js https intl tel input com 这是我的演示页面 在页面中我想清空手机 输入字段 当国家选择改变时 div class demo h3 Demo h3 div class iti
  • Flot 中轴的逗号分隔数字

    有没有办法让 Flot 使轴编号以逗号分隔 例如 用 1 000 000 代替 1000000 您可以通过使用轴的tickFormatter 属性来做到这一点 xaxis tickFormatter function val axis in
  • Node.js npm mssql 函数返回未定义

    我使用 mssql 和 node js 连接到 sql server 数据库 我试图通过将连接代码包装在具有一个查询参数的函数中来减少代码 当我从 router get 函数中的 with 调用该函数时 它返回未定义 任何帮助将非常感激 f
  • 如何在Keystone.js List Map中指定多个字段?

    想知道如何在 Keystone js List Map 中指定多个字段 例如 基于 Keystone 数据模型文档 http keystonejs com docs database http keystonejs com docs dat
  • 如果在 React JS 中选中复选框,如何隐藏或显示 div

    我如何在React JS中根据复选框状态 选中 未选中 显示 隐藏div 我对React很陌生 我知道如何在jquery中执行此操作 但在React上是另一种方法 提前致谢 EDITED 如果选中或未选中该复选框 则想要显示 隐藏带有 cl
  • 尝试在 Windows 上执行 package.json 中的脚本会引发 JScript 错误

    所以我正在尝试构建 javascriptair site 在 的里面package json有一个 npm 脚本指向 javascript 命令 package scripts 找到该存储库https github com kentcdod
  • 如何在D3中导入json数据?

    如何在D3中导入json文件 I did d3 json temp json 但是我如何在进一步的代码中访问这个数据集呢 到目前为止我已经尝试过 var data d3 json temp json 但使用 data data 在其余代码中
  • 如何在alert()之后给予focus()?

    我有类似的东西
  • 为什么WAV格式在不同的浏览器中没有相同的mimetype?

    文件输入在 Chrome 或 Firefox 中为同一文件提供不同的 Mimetype 我有一个我想上传的 wav 文件 chrome 说是audio wav和火狐检测audio x wav 我知道这两个 mimetype 非常相似 x 代
  • JavaScript 中 == 和 === 的区别[重复]

    这个问题在这里已经有答案了 有什么区别 and 在 JavaScript 中 我也见过 and 运营商 还有更多这样的运营商吗 看看这里 http longgoldenears blogspot com 2007 09 triple equ
  • 设备收到 GCM Android 通知但未显示

    尽管通知已在应用程序本身中注册 但我的 Ionic Android 应用程序的 GCM Cloud 消息通知未出现在我的设备的主屏幕中 我正在使用 npm 模块node gcm https www npmjs com package nod
  • 如何仅使用 Javascript 减慢平滑滚动的默认速度?

    我的目标是按回车键 然后让网站滚动到底部 我已将滚动行为设置为平滑 一切都正常工作 除了平滑滚动的默认速度太快了 我怎样才能减慢它的速度 下面是我的代码 请不要使用jquery 谢谢你 document body onkeyup funct
  • React Native 中 SVG 中的定位图标

    背景 我正在尝试按照本教程将工具提示添加到react native svg图表中 教程链接 Link https levelup gitconnected com adding tooltip to react native charts
  • 如何解析使用YUI数据源返回的NULL值

    我正在使用 YUI 数据表和数据源来渲染我的项目之一中的数据 返回的数据恰好为NULL YUI数据源无法解析它 下面是数据源和数据表的声明代码 为了便于阅读 我将每个声明分开 列说明声明 var columnDescription key
  • 如何编写用于退出 JavaScript 的 Typescript 定义文件

    我想使用 React 组件https github com alexkuz react json tree https github com alexkuz react json tree这是在我的 typescript 项目中用 Java
  • Google Universal Analytics - 命令被忽略

    我正在使用 Google Universal Analytics 来跟踪页面浏览量 当我导航到具有 Google Analytics 网站实时功能的页面时 我可以看到 因此我的代码一定可以正常工作 然而 Chrome 一直在控制台中显示 I
  • Material-UI 中 IconButton 的悬停效果

    图标按钮悬停 https i stack imgur com lsYHX png 这是我正在使用的 Material UI 中的 iconButton 正如您所看到的 当您将鼠标悬停在图标上时 图标周围有一个轻微的灰色边框 禁用此功能的属性

随机推荐

  • 由于 MultiReleaseException,jdeps 无法打印模块 deps

    我们有一个基于 JavaFX 的应用程序 它是not模块化 有原因 涉及遗留库 但我们使用构建自定义运行时jdeps and jlink 我们最近重写了该应用程序并添加了一些新的依赖项 并删除了其他依赖项 现在 正在构建应用程序的脚本突然停
  • EFCore 3.1 - 通过 Any 存在查询;查询无法翻译

    我们使用 EFCore 3 1 并尝试通过跨越 2 个属性的 Any 使用 Exists 构建查询 var selectionCriteria someHugeList Select sh gt new sh Id sh StatusCod
  • 改变眼睛图像中特定区域的颜色[Matlab]

    I am trying to change the pupil of the following image This is not a feature extraction or eye detection task I want to
  • 修复 iPhone/iPad/iPod 上的 CSS 悬停问题

    我想修复 iOS 上的悬停效果 更改为触摸事件 但我不知道 让我解释一下 您的页面中有一段文字 div class mm hello world div 风格 mm color 000 padding 15px mm hover backg
  • std::cin 跳过空格

    所以我试图编写一个函数来检查一个单词是否在句子中 通过循环遍历 char 数组并检查相同的 char 字符串 只要句子中没有任何空格 该程序就可以运行 我用谷歌搜索了一下 他们都是同样的建议 cin getline 但无论我如何实现它 它要
  • 创建您自己的 .NET 程序集缓存

    在我正在编写的 net 应用程序中 我需要在本地缓存各个位置的程序集 以便即使原始位置不可用 我的应用程序也可以使用它们 我无法使用 GAC 主要是因为我想要可移植性 而且还因为程序集可能未签名 有谁知道任何支持此功能的 net 代码吗 我
  • 使用公共类实现 Monolog

    我成功地实现了用于测试目的的 Monolog 记录器 现在我正在尝试在项目中使用它 该项目不使用任何MVC框架 我正在尝试编写一个公共类文件来包装对 Monolog 实例的访问 常用类文件 文件 app log php require au
  • 如何根据其他 JSON 值获取 JSON 值

    我在 Go 中有一个来自 XML resp body 的结构 pdp sellableUnits attributes id 22555278 type size value 03 5 type sizeJ struct PDP struc
  • 引导标签之间没有间距

    在我的应用程序中 我试图有几个连续的标签 就像这样jsbin http jsbin com hesav 1 相反 我得到这个 正如您所看到的 标签之间没有间距 这可能是因为我的CSS有问题 但我无法找到罪魁祸首 bootstrap 中定义的
  • Marionette.Renderer、Underscore 模板和 i18next 国际化

    我们目前需要使用 Backbone Marionette 和下划线模板向中型应用程序添加国际化 经过一番彻底的研究后 出现了两种有效的选择 下属18n https github com ggozad underi18n它提供与下划线的直接集
  • 从多个表中选择 Sequelize

    我目前正在使用sequelize开发一个系统 我需要一个查询来从多个表中获取数据 如下所示 Select Courses id Rooms DisplayLabel Periods DisplayName Subjects Name fro
  • 对超过 UInt16 屏障的程序集信息进行版本控制

    过去 我通常使用变更集或 svn 编号来对二进制文件进行版本控制 例如1 1 123 3 其中较大的数字是来自源代码控制系统的变更集或版本 然而 对于我现在使用的系统 我们已经远远超过了类似 70000 变更集的 uint 障碍 因此在用作
  • jQuery dataTables - 获取过滤的列值

    我正在使用 jQuery dataTable 当用户选择一个下拉列表时 它会搜索数据表并对其进行过滤 并根据搜索到的数据重新绘制内容 mtTable columns each function mtTable column 22 searc
  • javascript 之谜:两个对象在构造函数、原型和 __proto__ 链接方面看起来相同,但行为不同

    我是一位经验丰富的面向对象程序员 但这让我着迷 为什么我可以执行 new f 而不能执行 new a 我将不胜感激任何指点 first a few facts if Object instanceof Function console lo
  • 如何使批量插入适用于多个表

    当存在外键关系时 如何使用SQL Server批量插入插入到多个表中 我的意思是桌子是这样的 CREATE TABLE dbo UndergroundFacilityShape FacilityID int IDENTITY 1 1 NOT
  • VSCode - 光标在 AltGr 上向左移动。如何修复它?

    如果我在 vscode 编辑器中输入以下文本 http stackoverflow com Link to Stackoverflow omg 我得到这个结果 https stackoverflow com Link to Stackove
  • 如何在 Objective-C 中调试单例

    我的应用程序包含几个单例 以下是本教程 http cocoawithlove com 2008 11 singletons appdelegates and top level html 然而 我注意到 当应用程序因单例而崩溃时 几乎不可能
  • 如何在 PowerShell 中重命名文件?

    我有 2 个任务需要使用 PowerShell 来完成 1 我还需要将所有index asp重命名为Default aspx 2 我有一个目录C WWW我需要重命名所有 asp文件到 aspx 递归地 我已经尝试过Rename Item命令
  • PHP ORA-01745: 无效的主机/绑定变量名警告

    01745 运行滚动代码时发出无效主机 绑定变量名称警告 我不确定为什么会发生这种情况请帮忙 我觉得我的绑定一定有问题 但我看不出它有什么问题 我的 Start 和 End 变量看起来像 DD MM YY 我在下面列出了 PHP 代码 谢谢
  • 在reactjs中,数组或迭代器中的每个子元素都应该有一个唯一的“key”属性

    我完全困惑了 因为我的控制台出错了 我阅读了reactjs文档和stackoverflow上的所有提示 但我不明白问题是什么 我看到书名列表 item volumeInfo title 但控制台有错误 这是我的代码 import React