Reactjs 我如何才能为每个<;td>;

Reactjs 我如何才能为每个<;td>;,reactjs,Reactjs,我怎样才能为每一个人都拥有一把独一无二的钥匙 在保存每个产品的数据之前,是否需要创建UUID objectId":"00163E6CDDFC1EEA97DF0965781E400F","ID": product1":"F103_SURFACELAPTOP_15","product1Quantity":, "product2":"F101_MACBOOKPRO_16","product2Quantity":, "product3":"F102_MACBOOKPRO_13","product3Qua

我怎样才能为每一个人都拥有一把独一无二的钥匙 在保存每个产品的数据之前,是否需要创建UUID

objectId":"00163E6CDDFC1EEA97DF0965781E400F","ID":
product1":"F103_SURFACELAPTOP_15","product1Quantity":,
"product2":"F101_MACBOOKPRO_16","product2Quantity":,
"product3":"F102_MACBOOKPRO_13","product3Quantity":,
"product4":"F104_SURFACELAPTOP_13", "product4Quantity":
这就是我的桌子的样子

         <tr>
            {value.map((item, index) =>
              <>
                <td key={index}>{index + 1}</td>
                <td key={index}>{item.ID}</td>
                <td key={index}>{item.product1}</td>
                <td key={index}>{item.product1Quantity}</td>
                <td key={index}>{item.product2}</td>
                <td key={index}>{item.product2Quantity}</td>
                <td key={index}>{item.product3}</td>
                <td key={index}>{item.product3Quantity}</td>
                <td key={index}>{item.product4}</td>
                <td key={index}>{item.product4Quantity}</td>
              </>
            )}
          </tr>

{value.map((项目,索引)=>
{index+1}
{item.ID}
{item.product1}
{item.product1Quantity}
{item.product2}
{item.product2Quantity}
{item.product3}
{item.product3Quantity}
{item.product4}
{item.product4Quantity}
)}

尽管您所做的这一操作将为您提供唯一的密钥,但React文档并不建议您使用这种方法。尝试为要映射以进行渲染的每个组件查找唯一的组件,或者,如果您没有类似的组件,则可以使用uuid库

npm install uuid  or yarn add uuid
然后在组件导入库中
从'uuid'导入{v4 as uuidv4}

然后在内部映射中执行此操作

key={uuidv4()}

尽管您所做的这些将为您提供唯一的密钥,但React文档并不建议您使用这种方法。尝试为要映射以进行渲染的每个组件查找唯一的组件,或者,如果您没有类似的组件,则可以使用uuid库

npm install uuid  or yarn add uuid
然后在组件导入库中
从'uuid'导入{v4 as uuidv4}

然后在内部映射中执行此操作

key={uuidv4()}

首先要指出的是,您提供了错误元素的键。在映射时,需要为根元素分配一个唯一的键。在本例中,它是
片段。您需要像这样使用全名:

{value.map((项目,索引)=>
...
)}
接下来要指出的是,使用数组的索引作为键是非常重要的

如果项的顺序可能发生变化,我们不建议对键使用索引。这可能会对性能产生负面影响,并可能导致组件状态出现问题

React实际上会自动使用索引来分配键。如果没有指定,您将在控制台中得到一个警告

我看你有这个项目的ID。我建议使用:

{value.map((item, index) =>
  <React.Fragment key={item.ID}>
    ...
  </React.Fragment>
)}
{value.map((项目,索引)=>
...
)}

如果该ID不总是唯一的,或者不总是存在的,那么首先尝试找到其他唯一的ID。如果所有其他方法都失败了,您可以回过头来使用索引作为最后手段。请注意,如果数组的顺序发生变化,您可能会得到意外的结果。

首先要指出的是,您为错误的元素提供了密钥。在映射时,需要为根元素分配一个唯一的键。在本例中,它是
片段。您需要像这样使用全名:

{value.map((项目,索引)=>
...
)}
接下来要指出的是,使用数组的索引作为键是非常重要的

如果项的顺序可能发生变化,我们不建议对键使用索引。这可能会对性能产生负面影响,并可能导致组件状态出现问题

React实际上会自动使用索引来分配键。如果没有指定,您将在控制台中得到一个警告

我看你有这个项目的ID。我建议使用:

{value.map((item, index) =>
  <React.Fragment key={item.ID}>
    ...
  </React.Fragment>
)}
{value.map((项目,索引)=>
...
)}

如果该ID不总是唯一的,或者不总是存在的,那么首先尝试找到其他唯一的ID。如果所有其他方法都失败了,您可以回过头来使用索引作为最后手段。请注意,如果数组的顺序发生更改,您可能会得到意外的结果。

请记住,React使用键在项目更新时优化列表中项目的呈现。您可能需要的是:

{value.map((item, index) =>
  <tr key={item.ID}>
    <td>{index + 1}</td>
    <td>{item.ID}</td>
    <td>{item.product1}</td>
    <td>{item.product1Quantity}</td>
    <td>{item.product2}</td>
    <td>{item.product2Quantity}</td>
    <td>{item.product3}</td>
    <td>{item.product3Quantity}</td>
    <td>{item.product4}</td>
    <td>{item.product4Quantity}</td>
  </tr>
)}
{value.map((项目,索引)=>
{index+1}
{item.ID}
{item.product1}
{item.product1Quantity}
{item.product2}
{item.product2Quantity}
{item.product3}
{item.product3Quantity}
{item.product4}
{item.product4Quantity}
)}

如果
ID
在项目之间是唯一的,则它是项目行的一个很好的关键字候选项。

请记住,React使用该关键字在项目更新时优化列表中项目的呈现。您可能需要的是:

{value.map((item, index) =>
  <tr key={item.ID}>
    <td>{index + 1}</td>
    <td>{item.ID}</td>
    <td>{item.product1}</td>
    <td>{item.product1Quantity}</td>
    <td>{item.product2}</td>
    <td>{item.product2Quantity}</td>
    <td>{item.product3}</td>
    <td>{item.product3Quantity}</td>
    <td>{item.product4}</td>
    <td>{item.product4Quantity}</td>
  </tr>
)}
{value.map((项目,索引)=>
{index+1}
{item.ID}
{item.product1}
{item.product1Quantity}
{item.product2}
{item.product2Quantity}
{item.product3}
{item.product3Quantity}
{item.product4}
{item.product4Quantity}
)}

如果
ID
在所有项目中都是唯一的,那么它是项目行的一个很好的候选键。

这将比使用索引的性能更差。每次运行map函数时,所有项都将重新加载。这不是键的使用方式。其目的是区分react元素,以便能够更新/添加/删除正确的元素。由于函数调用是内联的,因此此方法将为每个渲染指定一个新键。在这种情况下,这只会导致效率低下,但如果在呈现组件时执行此操作,则会导致每次呈现都完全卸载/重新装载。这将比使用索引的性能更差。每次运行map函数时,所有项都将重新加载。这不是键的使用方式。其目的是区分react元素,以便能够更新/添加/删除正确的元素。由于函数调用是内联的,因此此方法将为每个渲染指定一个新键。在这种情况下,这只会导致效率低下,但如果在呈现组件时执行此操作,则会导致每个呈现完全卸载/重新装载。