javascript - 使用唯一键道具解决问题
问题描述
我有一个问题控制台Each child in a list should have a unique "key" prop.
,它弄乱了我的购物车功能我已经创建了它的副本https://codesandbox.io/s/quiet-http-8yhkp
import React,{useState, useEffect, useContext} from 'react'
import './Home.css'
import Books from './Books'
import { BookContext } from "../../context/books";
const Home = () => {
const {data, handleSelectCategory, currentSelectedCategory } =useContext(BookContext)
return (
<div className='books__container' >
<h1 className='categories'>Categories</h1>
{Object.keys(data).map((key, index)=>{
let books = data[key];
return (
<>
<span key={key} onClick={() => handleSelectCategory(key)} className='books__list' >
{books[0].category}
</span>
</>
);})}
<Books category={currentSelectedCategory} />
</div>
)
}
export default Home
解决方案
您需要提供最外层 JSX 元素的键。你可以
- 删除
<> </>
标签(最佳选择)
return (
<span key={key} onClick={() => handleSelectCategory(key)} className='books__list' >
{books[0].category}
</span>
)
- 用于
React.Fragment
应用密钥道具
return (
<React.Fragment key={key}>
<span key={key} onClick={() => handleSelectCategory(key)} className='books__list' >
{books[0].category}
</span>
</React.Fragment>
)
推荐阅读
- python - 在字符串中寻找“mop”、“map”、“mXp”等模式,以小写“m”开头,以小写“p”结尾
- python - 从 np 随机选择中获取数组,避免循环和错误“a must be 1-dimensional”
- css - 平坦的菜单响应断点
- linux - 打开文件/文件夹时,vscode 在 Arch linux 上崩溃
- rust - 预期的 fn 指针,发现闭包
- ios - iOS 14.1 随机显示 RSSI 为 19
- javascript - 删除网址中第一个正斜杠之前的所有内容
- git - 如何显示 git 消息正文(不仅仅是标题)?
- excel - 是否可以遍历 excel 工作表并在每个工作表上运行略有不同的代码?
- php - 在 View 上打印嵌套数组 | 代码点火器