Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组或迭代器中的每个子级都应该有一个唯一的“键”属性。在js中?_Javascript_Arrays_Reactjs - Fatal编程技术网

Javascript 数组或迭代器中的每个子级都应该有一个唯一的“键”属性。在js中?

Javascript 数组或迭代器中的每个子级都应该有一个唯一的“键”属性。在js中?,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我已经提供了不同的密钥。为什么它会给我警告? 这是我的密码 首先,您将键设置在错误的行。片段不会呈现为HTML,但它需要密钥属性 其次,我建议您向嵌套属性添加唯一的id,因为index+I不能保证唯一性。index+I对于index和I的每个值都不是唯一的 假设fetchData和row的长度都是2,那么index和i都将从0到1计数 key = index + i index i key 0 0 0 0 1 1 1 0 1 1

我已经提供了不同的密钥。为什么它会给我警告? 这是我的密码


首先,您将键设置在错误的行。片段不会呈现为HTML,但它需要密钥属性

其次,我建议您向嵌套属性添加唯一的id,因为index+I不能保证唯一性。

index+I对于index和I的每个值都不是唯一的

假设fetchData和row的长度都是2,那么index和i都将从0到1计数

key = index + i

index  i     key
0      0     0
0      1     1
1      0     1
1      1     2
这会产生两次1,因此关键点不是唯一的。转换为字符串将有助于:

key = String( index ) + String( i )

index  i     key
0      0     "00"
0      1     "01"
1      0     "10"
1      1     "11"
或者可以乘以row.length生成唯一的整数

key = ( index * row.length ) + i

index  i     key
0      0     0
0      1     1
1      0     2
1      1     3
您的标题或显示文本是否唯一?如果是这样的话,你可以用它们作为关键道具

<TableBody>
          {fetchData.map(([title, row], index) => {
            return (
              <Fragment>
                <TableRow key={title}>
                  <TableCell colSpan="2">{title}</TableCell>
                </TableRow>
                {row.map(({ displaytext, value }, i) => (
                  <TableRow key={displaytext}>
                    <TableCell>{displaytext}</TableCell>
                    <TableCell>{value}</TableCell>
                  </TableRow>
                ))}
              </Fragment>
            );
          })}
</TableBody>

索引+i不保证唯一性。您有重复项。当索引为0时,您创建0+0、0+1、0+N,然后索引变为1,您有1+0,以此类推…请建议更好的方法,我添加了一个,但仍然存在相同的错误
key = ( index * row.length ) + i

index  i     key
0      0     0
0      1     1
1      0     2
1      1     3
<TableBody>
          {fetchData.map(([title, row], index) => {
            return (
              <Fragment>
                <TableRow key={title}>
                  <TableCell colSpan="2">{title}</TableCell>
                </TableRow>
                {row.map(({ displaytext, value }, i) => (
                  <TableRow key={displaytext}>
                    <TableCell>{displaytext}</TableCell>
                    <TableCell>{value}</TableCell>
                  </TableRow>
                ))}
              </Fragment>
            );
          })}
</TableBody>