diff --git a/crates/oxc_linter/src/rules/react/jsx_no_undef.rs b/crates/oxc_linter/src/rules/react/jsx_no_undef.rs index 6dd66bf56ac45..55a738acb2635 100644 --- a/crates/oxc_linter/src/rules/react/jsx_no_undef.rs +++ b/crates/oxc_linter/src/rules/react/jsx_no_undef.rs @@ -53,19 +53,19 @@ impl Rule for JsxNoUndef { fn run<'a>(&self, node: &AstNode<'a>, ctx: &LintContext<'a>) { if let AstKind::JSXOpeningElement(elem) = &node.kind() { if let Some(ident) = get_resolvable_ident(&elem.name) { + let reference = ctx.symbols().get_reference(ident.reference_id().unwrap()); + if reference.symbol_id().is_some() { + return; + } let name = ident.name.as_str(); + // TODO: Remove this check once we have `JSXMemberExpressionObject::ThisExpression` if name == "this" { return; } - for scope_id in ctx.scopes().ancestors(node.scope_id()) { - if ctx.scopes().has_binding(scope_id, name) { - return; - } - } if ctx.globals().is_enabled(name) { return; } - ctx.diagnostic(jsx_no_undef_diagnostic(ident.name.as_str(), ident.span)); + ctx.diagnostic(jsx_no_undef_diagnostic(name, ident.span)); } } }