我是新手,我正在try 输出一个包含用户信息的表.但Eslint一直在给我以下错误:

[eslint] Missing "key" prop for element in iterator [react/jsx-key]

我不确定我是否正确地做到了这一点,但我已经为用户列表中的每个人分配了一个唯一的ID号,但不确定为什么错误会持续存在.

所以在我的名片上.我有以下几点:

import React from "react";
import {
  Card,
  CardImg,
  CardText,
  CardBody,
  CardTitle,
  CardSubtitle,
  Button
} from "reactstrap";
import PropTypes from "prop-types";

class PeopleCard extends React.Component {
  static propTypes = {
    person: PropTypes.object,
    id: PropTypes.number,
    name: PropTypes.string,
    company: PropTypes.string,
    description: PropTypes.string
  };
  render() {
    return (
      <div>
        <Card>
          <CardImg
            top
            width="100%"
            src="https://via.placeholder.com/318x180.png"
            alt="Card image cap"
          />
          <CardBody>
            <CardTitle>{this.props.person.name}</CardTitle>
            <CardSubtitle>{this.props.person.company}</CardSubtitle>
            <CardText>{this.props.person.description}</CardText>
            <Button>Button</Button>
          </CardBody>
        </Card>
      </div>
    );
  }
}

export default PeopleCard;

在我的主要区域.js,我有以下几点:

import React from "react";
import { Container, Row, Col } from "reactstrap";
import PeopleCard from "./PeopleCard";

class MainArea extends React.Component {
  constructor() {
    super();
    this.state = {
      people: [
        {
          id: 1,
          name: "John",
          company: "Some Company, Inc",
          description: "Met at a party."
        },
        {
          id: 2,
          name: "Mary",
          company: "Some Company, Inc",
          description: "Met at a party."
        },
        {
          id: 3,
          name: "Jane",
          company: "Some Company, Inc",
          description: "Met at a party."
        }
      ]
    };
  }
  render() {
    let peopleCard = this.state.people.map(person => {
      return (
        <Col sm="4">
          <PeopleCard key={person.id} person={person} />
        </Col>
      );
    });
    return (
      <Container fluid>
        <Row>{peopleCard}</Row>
      </Container>
    );
  }
}

export default MainArea;

下面的一行抛出了错误,我不知道为什么:

<Col sm="4">
   <PeopleCard key={person.id} person={person} />
</Col>

如何防止出现此错误?

推荐答案

你应该把 keys 放在外部元件上:

const peopleCard = this.state.people.map(person => (
  <Col key={person.id} sm="4">
    <PeopleCard person={person} />
  </Col>
));

Reactjs相关问答推荐

Shadck/ui Select -当用户 Select 项目时更改状态

Reaction Native:在初始获取后,Reducer变为未定义

如何创建react router v6的自定义子路由?

有没有办法将MUI网格元素与Flex-Start对齐?

当列表中的项的顺序改变并且使用唯一键作为它们的索引时,Reaction如何看待呈现方面?

在Reaction中的第一次装载时,Use Effect返回空数组

使用Ionic 7和React 18,如何访问历史对象以在页面之间导航?

透明MOV文件未出现在我的React网页中

找不到名称setCometChat

如何使用服务器中的数据自动填充表单字段?

修改React数据表扩展组件

从 React 应用程序调用未经身份验证的 graphql 查询时出现错误:没有当前用户

根据其中的值不同地react setState 更新状态

如何处理页面加载时发生的 reactjs 错误?

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

将 Material UI 菜单渲染为

是什么导致了这个令人惊讶的数组导致 React

我在使用 Elements of stripe 时使用 React router v6

仅在重新渲染后设置状态

ClearInterval 在 React 中的 useRef 没有按预期工作