当前位置: 首页 > 知识库问答 >
问题:

React map中的密钥问题

佴波鸿
2023-03-14

我试图通过在索引中添加标签名来在映射上迭代时生成唯一键。

请查找下面的代码片段。

const controls = [
  { label: "Salad", type: "salad" },
  { label: "Bacon", type: "bacon" },
  { label: "Cheese", type: "cheese" },
  { label: "Meat", type: "meat" }
];

const BuildControls = props => (
  <div className="BuildControls">
    {controls.map((item, index) => (
      <BuildControl
        ```key={item.label + index}```
        label={item.label}
        added={() => props.ingredientsAdded(item.type)}
        removed={() => props.ingredientsRemoved(item.type)}
        disabled={props.disabled[item.type]}
      />
    ))}
  </div>
);

当我尝试重复添加项目时,出现以下错误。

警告:遇到两个具有相同密钥的子项,1。键应该是唯一的,以便组件在更新期间保持其标识。非唯一键可能会导致复制和/或忽略子项-不支持该行为,并且可能在将来的版本中更改。在burgers(由burgers创建)中的div(由BurgerBuilder创建)中的Aux(由BurgerBuilder创建)中的BurgerBuilder(由应用程序创建)中的div(由应用程序创建)中的应用程序

共有2个答案

麹鸿煊
2023-03-14

我想知道问题是什么,因为如果你看这个片段,它不会给出任何错误。不确定BuildControl组件中有什么逻辑。

import React from "react";
import ReactDOM from "react-dom";


const controls = [{
   label: "Salad",
   type: "salad"
  },
  {
   label: "Bacon",
   type: "bacon"
  },
  {
   label: "Cheese",
   type: "cheese"
  },
  {
  label: "Meat",
  type: "meat"
  }
  ];


function BuildControl(props) {
  return ( <h1> {props.data.type} </h1>)}

function App() {
  return ( <div className = "BuildControls" > {
     controls.map((item, index) => (<BuildControl data = {item}/>))
   } </div>
 );
}

const rootElement = document.getElementById("root");
ReactDOM.render( <App/> , rootElement);
常宸
2023-03-14

其实很简单,

{controls.map((item, index) => (
   <BuildControl
      key={`${item.label}${index}`}
      label={item.label}
      added={() => props.ingredientsAdded(item.type)}
      removed={() => props.ingredientsRemoved(item.type)}
      disabled={props.disabled[item.type]}
   />
))}

最新消息

警告来自您的汉堡。js文件,您正在创建重复的,执行此操作,

<BurgerIngredient key={`${item}${i}`} type={item} />
 类似资料:
  • 我用过这个命令 生成密钥库。它工作正常,但从我读到的内容来看,这个命令还应该提示您输入密钥密码(而不是存储密码)?我从来没有收到过这样的提示。我能跑 查看密钥库的内容。钥匙似乎就在那里。。。正确的别名在那里。在哪里获取/设置特定别名的密码? 我有一个key.properties在Android目录 在build.gradle我有: 当我试图生成一个发布版本时,我得到了 我想它可能与keyPassw

  • 我试图编译代码时遇到了这个异常。我已经安装了eclips工具包,我正在使用EclipseKepler 异常线程"main"java.lang.NoClassDefFoundError: org/apache/共用/日志/LogFactory在com.amazonaws.Amazon WebServiceClient.(Amazon WebServiceClient.java:56)在test_to

  • 这是我的secret-class.yml文件(keyvault的名称是正确的)。另外,xxx-xxxx-xxx-xxx-xxx-xxx-xxx-xxx-xxx4b5ec83是AKS托管标识(SonarQubeHelm-agentpool)的对象 这是我的deployment.yml文件 我为AKS托管标识分配了正确的权限,以便访问keyvault(XXX-XXXXX-XXX-XXX-XXXX4B5

  • 杰米特。我在系统中设置了jks的路径和密码。财产。我执行一个HTTP请求,在日志中看到一个错误: 和 日志:

  • 我从后端服务器得到一个加密的字符串,我需要使用Android中的私钥来解密。解密是有效的,但它在解密字符串的末尾附加了一个特殊的字符。下面是我正在使用的代码: 解密的字符串应该以“==”结尾。有人能帮我弄清楚,如何删除解密字符串结尾的特殊字符。 谢谢