react/react-in-jsx-scope 可疑
它做了什么
强制在使用 JSX 语法时,React 已被导入且处于作用域内。
请注意,如果您使用的是 React 17+ 并且启用了新的 JSX Transform,此规则并非必需。您可以禁用此规则,并在包含 JSX 语法的文件中跳过导入 React。
如果您的 tsconfig.json 中将 jsx 设置为 react-jsx 或 react-jsxdev,则您正在使用新的 JSX Transform。对于使用 Babel 的 JavaScript 项目,如果您的 React 预设配置(在 .babelrc 或 babel.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