Rules
no-duplicate-key
This rule is experimental and may change in the future or be removed. It is not recommended for use in production code at this time.
Full Name in @eslint-react/eslint-plugin
@eslint-react/no-duplicate-keyFull Name in eslint-plugin-react-x
react-x/no-duplicate-keyFeatures
๐งช
Description
Prevents duplicate key props on sibling elements when rendering lists.
React uses keys to identify elements in an array. If two elements have the same key, React will not be able to distinguish them. This can lead to issues with state and rendering.
Examples
Failing
import React from 'react';
function MyComponent () {
return [
<li key="1">Item 1</li>
<li key="1">Item 2</li>
// ^^^^^^^
// - The 'key' prop must be unique to its sibling elements.
]
};import React from "react";
function MyComponent() {
return (
<ul>
<li key="1">Item 1</li>
<li key="1">Item 2</li>
{/* ^^^^^^^ */}
{/* - The 'key' prop must be unique to its sibling elements. */}
</ul>
);
}import React from "react";
function MyComponent() {
return (
<ul>
{["a", "b"].map((id) => <li key="1">{id}</li>)}
</ul>
);
// ^^^^^^^
// - The 'key' prop must be unique to its sibling elements.
}Passing
import React from 'react';
function MyComponent () {
return [
<li key="1">Item 1</li>
<li key="2">Item 2</li>
]
};import React from "react";
function MyComponent() {
return (
<ul>
<li key="1">Item 1</li>
<li key="2">Item 2</li>
</ul>
);
}import React from "react";
function MyComponent() {
return (
<ul>
{["a", "b"].map((id) => <li key={id}>{id}</li>)}
</ul>
);
}Implementation
Further Reading
See Also
no-missing-key
Prevents missingkeyon items in list rendering.no-implicit-key
Preventskeyfrom not being explicitly specified (e.g., spreadingkeyfrom objects).no-array-index-key
Warns when an arrayindexis used as akeyprop.no-unnecessary-key
Disallows unnecessarykeyprops on elements.