diff --git a/crates/oxc_linter/src/rules/react/jsx_key.rs b/crates/oxc_linter/src/rules/react/jsx_key.rs
index 27d94bc2a..86b3b1cad 100644
--- a/crates/oxc_linter/src/rules/react/jsx_key.rs
+++ b/crates/oxc_linter/src/rules/react/jsx_key.rs
@@ -81,7 +81,6 @@ fn is_in_array_or_iter<'a, 'b>(
loop {
let parent = ctx.nodes().parent_node(node.id())?;
-
match parent.kind() {
AstKind::ArrowFunctionExpression(arrow_expr) => {
let is_arrow_expr_statement = matches!(
@@ -133,9 +132,10 @@ fn is_in_array_or_iter<'a, 'b>(
return None;
}
- AstKind::JSXElement(_) | AstKind::JSXOpeningElement(_) | AstKind::ObjectProperty(_) => {
- return None
- }
+ AstKind::JSXElement(_)
+ | AstKind::JSXOpeningElement(_)
+ | AstKind::ObjectProperty(_)
+ | AstKind::JSXFragment(_) => return None,
AstKind::ReturnStatement(_) => {
is_explicit_return = true;
}
@@ -313,6 +313,12 @@ fn test() {
const directiveRanges = comments?.map(tryParseTSDirective)
",
+ r#"
+ const foo: (JSX.Element | string)[] = [
+ "text",
+ hello worldsuperscript,
+ ];
+ "#,
r#"
import { observable } from "mobx";
diff --git a/crates/oxc_linter/src/snapshots/jsx_key.snap b/crates/oxc_linter/src/snapshots/jsx_key.snap
index 460b63fe7..47ebfaa4c 100644
--- a/crates/oxc_linter/src/snapshots/jsx_key.snap
+++ b/crates/oxc_linter/src/snapshots/jsx_key.snap
@@ -1,5 +1,6 @@
---
source: crates/oxc_linter/src/tester.rs
+assertion_line: 161
expression: jsx_key
---
⚠ eslint-plugin-react(jsx-key): Missing "key" prop for element in array.
@@ -128,15 +129,6 @@ expression: jsx_key
╰────
help: Add a "key" prop to the element in the iterator (https://react.dev/learn/rendering-lists#keeping-list-items-in-order-with-key).
- ⚠ eslint-plugin-react(jsx-key): Missing "key" prop for element in iterator.
- ╭─[jsx_key.tsx:1:12]
- 1 │ [1, 2, 3]?.map(x => <>>)
- · ─┬─ ────────┬───────
- · │ ╰── Element generated here
- · ╰── Iterator starts here
- ╰────
- help: Add a "key" prop to the element in the iterator (https://react.dev/learn/rendering-lists#keeping-list-items-in-order-with-key).
-
⚠ eslint-plugin-react(jsx-key): Missing "key" prop for element in iterator.
╭─[jsx_key.tsx:1:11]
1 │ [1, 2, 3].map(x => <>{x}>);