ESLint 没有检测到导入的 React 组件

Posted

技术标签:

【中文标题】ESLint 没有检测到导入的 React 组件【英文标题】:ESLint not detecting imported React Components 【发布时间】:2017-07-16 08:11:51 【问题描述】:

我遇到了一个问题,ESLint 没有使用“no-unused-vars”规则检测导入的 React 组件。我的组件已导入:

import MediaQuery from 'react-responsive';

并且该组件在文件中被进一步使用:

render() 
  return (
    <MediaQuery maxDeviceWidth=750>
      <div style=styles.iconMobileContainerRight >
        <i className="fa fa-chevron-right" style=styles.checkboxMobile aria-hidden="true" ></i>
      </div>
    </MediaQuery>
  );

我的 .eslintrc.js 文件如下:

module.exports = 
    "env": 
        "browser": true,
        "commonjs": true,
        "es6": true,
        "node": true
    ,
    "extends": "eslint:recommended",
    "parserOptions": 
        "ecmaFeatures": 
            "experimentalObjectRestSpread": true,
            "jsx": true
        ,
        "sourceType": "module"
    ,
    "plugins": [
        "react"
    ],
    "rules": 
        "indent": [
            "error",
            2
        ],
        "linebreak-style": [
            "error",
            "unix"
        ],
        "quotes": [
            "error",
            "single"
        ],
        "semi": [
            "error",
            "always"
        ]
    
;

我正在使用安装了 linter 和 linter-eslint 软件包的 atom 文本编辑器(两者都是最新版本)。为了让 linter 检测到导入组件的使用,我缺少什么?

【问题讨论】:

@MayankShukla 错误是“no-unused-vars”。您可以在 eslint 文档中了解更多信息:eslint.org/docs/rules/no-unused-vars 不,这似乎与我的 React 配置有关,但我不确定是什么。我对 ESLint 以及它需要如何配置不是很熟悉。 【参考方案1】:

默认情况下,ESLint 不会检测 JSX 中使用的变量。要将它们标记为已使用,您应该使用eslint-plugin-react 插件的jsx-uses-vars 规则。

【讨论】:

修复了它。谢谢! 没问题,很高兴它有帮助:) 我花了一段时间才启用此设置 - 命名不是很直观。它需要"rules": "react/jsx-uses-vars": "error"

以上是关于ESLint 没有检测到导入的 React 组件的主要内容,如果未能解决你的问题,请参考以下文章

如何从导入“react”中删除未解决的 ESlint 错误

ESlint - 错误:必须使用导入来加载 ES 模块

ESLint: '@material-ui/core/Button' 导入被限制使用

Eslint:功能组件中的默认道具问题(Typescript - React)

eslint-config-google 没有检测到全局安装的 eslint

挣扎于 TypeScript、React、Eslint 和简单的箭头函数组件