不迭代时如何解决数组中元素的eslint缺少关键道具?

Posted

技术标签:

【中文标题】不迭代时如何解决数组中元素的eslint缺少关键道具?【英文标题】:How to resolve eslint missing key prop for element in array when not iterating? 【发布时间】:2022-01-16 18:30:32 【问题描述】:

对于以下代码,eslintreact/jsx-key: Missing 'key' prop for element in array 引发错误。

我知道我需要向我的数组添加键,但我不知道在哪里以及如何!

我该如何解决?

export default function App() 
  const [step, setStep] = useState(0);

  function handleClick() 
    setStep((step) => [1, 2, 0][step]);
  

  const ComponentList = [
    <div>Step 1</div>,
    <div>Step 2</div>,
    <div>Step 3</div>
  ];

  return (
    <div>
      <button onClick=handleClick>Increment Step</button>
      ComponentList[step]
    </div>
  );

【问题讨论】:

【参考方案1】:

不建议使用索引作为键,您应该使用唯一标识符,但以此为例。

export default function App() 
      const [step, setStep] = useState(0);

      function handleClick() 
        setStep((step) => [1, 2, 0][step]);
      

      const ListItem = (step) => (<div>`Step $step`</div>)

      return (
        <div>
          <button onClick=handleClick>Increment Step</button>
          <ListItem item=step>
        </div>
      );
    

在此示例中,ListItem 甚至不需要键,因为我们没有遍历数组。但如果它是一个数组,那就是:

list.map(step => <ListItem step=step key=`list-item-$step.toString()`>)

【讨论】:

以上是关于不迭代时如何解决数组中元素的eslint缺少关键道具?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不迭代的情况下访问数组中的特定元素?

如何在c ++中迭代数组中的唯一元素[关闭]

迭代json结构,然后使用splice删除特定元素

缺少元素的“关键”道具。 (ReactJS 和 TypeScript)

如何修复“缺少根元素”。在进行 Visual Studio (VS) 构建时?

在multimap或multiset中查找元素