Skip to content
← Back to rules

react/react-in-jsx-scope 可疑

它做了什么

强制在使用 JSX 语法时,React 已被导入且处于作用域内。

请注意,如果您使用的是 React 17+ 并且启用了新的 JSX Transform,此规则并非必需。您可以禁用此规则,并在包含 JSX 语法的文件中跳过导入 React

如果您的 tsconfig.json 中将 jsx 设置为 react-jsxreact-jsxdev,则您正在使用新的 JSX Transform。对于使用 Babel 的 JavaScript 项目,如果您的 React 预设配置(在 .babelrcbabel.config.js 中)设置了 runtime: "automatic",则您也在使用新的 JSX Transform。

更多信息,请参见 React 官方博客关于 JSX Transform 的文章

为什么这是问题?

使用 JSX 时,<a /> 会扩展为 React.createElement("a")。因此,React 变量必须处于作用域内。

示例

此规则的 错误 代码示例:

jsx
const a = <a />;

此规则的 正确 代码示例:

jsx
import React from "react";
const a = <a />;

如何使用

要通过配置文件或 CLI 启用 此规则,可以使用:

json
{
  "plugins": ["react"],
  "rules": {
    "react/react-in-jsx-scope": "error"
  }
}
bash
oxlint --deny react/react-in-jsx-scope --react-plugin

参考资料