diff --git a/crates/oxc_linter/src/rules/react/jsx_key.rs b/crates/oxc_linter/src/rules/react/jsx_key.rs index 3ea13e887..3547e1a73 100644 --- a/crates/oxc_linter/src/rules/react/jsx_key.rs +++ b/crates/oxc_linter/src/rules/react/jsx_key.rs @@ -79,6 +79,15 @@ fn is_in_array_or_iter<'a, 'b>( }; match parent.kind() { + AstKind::ArrowExpression(_) | AstKind::Function(_) => { + let Some(parent) = ctx.nodes().parent_node(parent.id()) else { + return None; + }; + + if let AstKind::ObjectProperty(_) = parent.kind() { + return None; + } + } AstKind::ArrayExpression(_) => return Some(InsideArrayOrIterator::Array), AstKind::CallExpression(v) => { let callee = &v.callee.without_parenthesized(); @@ -94,8 +103,9 @@ fn is_in_array_or_iter<'a, 'b>( return None; } AstKind::JSXElement(_) | AstKind::JSXOpeningElement(_) => return None, - _ => node = parent, + _ => {} } + node = parent; } } @@ -290,10 +300,33 @@ fn test() { } export const clusterFrameMap = observable.map(); - "#, None, ), + ( + r#" + const columns: ColumnDef[] = [{ + accessorKey: 'lastName', + header: ({ column }) => , + cell: ({ row }) =>
{row.getValue('lastName')}
, + enableSorting: true, + enableHiding: false, + }] + "#, + None, + ), + ( + r#" + const columns: ColumnDef[] = [{ + accessorKey: 'lastName', + header: function ({ column }) { return }, + cell: ({ row }) =>
{row.getValue('lastName')}
, + enableSorting: true, + enableHiding: false, + }] + "#, + None, + ), ]; let fail = vec![