首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么意味着列表中的每个孩子都应该有键id?

什么意味着列表中的每个孩子都应该有键id?
EN

Stack Overflow用户
提问于 2022-01-24 12:03:46
回答 2查看 167关注 0票数 -2

我想我不明白某事。

我把每一个地方的纳米标识键,但仍然得到错误。

react jsx runtime.Development.js:117警告:列表中的每个子项目都应该有一个唯一的“键”支柱。检查Users的呈现方法。

代码语言:javascript
复制
import React from "react";
import {useQuery} from "@apollo/client"
import { ListGroup, Container, Row, Col,Card } from "react-bootstrap";
import {GET_USERS} from "../Queries/Queries"
import { nanoid } from 'nanoid'

function Users() {
    const { loading, error, data}= useQuery(GET_USERS)
    if (loading) return <p>Loading...</p>
    if (error) return <p>Error</p>

     return (
      <Container> 
        {
        data && data.users.map(user=>{ 
            return(
                <>
                <br/>
               
                <Row key={nanoid()}>
                    <Card  key={nanoid()} style={{ width: '6rem' }}>
                        <Card.Img key={nanoid()} variant="top" src={user.avatar} />
                    </Card>
                    <br />
                    <Col key={nanoid()}>
                    <ListGroup key={nanoid()}>
                        <ListGroup.Item key={nanoid()}>Id: {user.id} </ListGroup.Item>
                        <ListGroup.Item key={nanoid()}>Email: {user.email}</ListGroup.Item>
                        <ListGroup.Item key={nanoid()}>Username: {user.username}</ListGroup.Item>
                    </ListGroup>
                    </Col>  
                </Row>
                
                </> 
                )   
            })
        } 
      </Container>
  );
}

export default Users;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-24 12:16:18

错误消息是说它正在映射的每一项都需要一个键,所以您只需要向父容器添加一个键,如下所示

代码语言:javascript
复制
function Users() {
    const { loading, error, data}= useQuery(GET_USERS)
    if (loading) return <p>Loading...</p>
    if (error) return <p>Error</p>

     return (
      <Container> 
        {
        data && data.users.map((user, index)=>{ 
            return(
                <Row key={index}>
                    <Card style={{ width: '6rem' }}>
                        <Card.Img variant="top" src={user.avatar} />
                    </Card>
                    <br />
                    <Col>
                    <ListGroup>
                        <ListGroup.Item>Id: {user.id} </ListGroup.Item>
                        <ListGroup.Item>Email: {user.email}</ListGroup.Item>
                        <ListGroup.Item>Username: {user.username}</ListGroup.Item>
                    </ListGroup>
                    </Col>  
                </Row>
                )   
            })
        } 
      </Container>
  );
}

我只是删除dthe标记和BR,而不是将父容器添加到您已经拥有的内容中。您应该向该行添加一个className,以获得所需的空间,而不是使用BR。

票数 0
EN

Stack Overflow用户

发布于 2022-01-24 12:09:41

当你映射一些反应时,用唯一的键来反应轨道节点。e.g

代码语言:javascript
复制
[{id:1,value:'value 1'},{id:2,value:'value 2'}].map((item,index) => 
(<Row key={`row-${item.id}`}>all content goes here.</Row>))

key={行-${item.id}}对于每个环项都应该是唯一的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70833575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档