ESLint с React выдает ошибки no-unused-vars

86

Я установил eslint& eslint-plugin-react.

Когда я запускаю ESLint, линтер возвращает no-unused-varsошибки для каждого компонента React.

Я предполагаю, что он не осознает, что я использую синтаксис JSX или React. Любые идеи?

Пример:

app.js

import React, { Component } from 'react';
import Header from './header.js';

export default class App extends Component {
  render() {
    return (
      <div>
        <Header />
        {this.props.children}
      </div>
    );
  }
}

Ошибки ЛИНТЕР:

/my_project/src/components/app.js
  1:8  error  'React' is defined but never used   no-unused-vars
  2:8  error  'Header' is defined but never used  no-unused-vars

Вот мой .eslintrc.jsonфайл:

{
    "env": {
        "browser": true,
        "es6": true
    },
    "extends": "eslint:recommended",
    "parserOptions": {
        "ecmaFeatures": {
            "experimentalObjectRestSpread": true,
            "jsx": true
        },
        "sourceType": "module"
    },
    "plugins": [
        "react"
    ],
    "rules": {
        "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],
        "indent": [
            "error",
            2
        ],
        "linebreak-style": [
            "error",
            "unix"
        ],
        "quotes": [
            "error",
            "single"
        ],
        "semi": [
            "error",
            "always"
        ]
    }
}
Дон П
источник
Вы импортируете, Reactкогда не используете его, вы просто используете Component, который правильно импортирован.
GMaiolo 01
В этом есть смысл - но почему еще должна Headerбыть ошибка? (На самом деле вам нужно импортировать React, иначе, когда JSX будет транспилирован, он выдаст ошибку)
Дон П.
Этого сейчас не должно происходить. Какая у вас версия eslint? github.com/eslint/eslint/issues/1905
daniloprates 01

Ответы:

175

В вашем .eslintrc.jsonразделе extendsвключите следующий плагин:

'extends': [
    'plugin:react/recommended'
]

Источник

Эдвард Дамато
источник
1
Отличный ответ. Конечно, вы должны сначала сделать это (npm install --save-dev eslint-plugin-
react
А если вы используете airbnb? Раньше я пробовал добавить 'plugin: react / Recommended', но это не сработало extends: ["plugin: react / Recommended", «airbnb», «airbnb / hooks», «plugin: react-redux / recommended», «plugin : prettier / recommended ","
prettier / react
Вот авторитетная документация ... github.com/yannickcr/eslint-plugin-react#recommended
Кен Лин
58

Чтобы решить эту единственную проблему без добавления новых правил из react/recommendedустановки eslint-plugin-react:

npm install eslint-plugin-react --save-dev

добавить .eslintrc.js:

"plugins": ["react"]

а также:

"rules": {   
     "react/jsx-uses-react": "error",   
     "react/jsx-uses-vars": "error" 
}
Михей Мик
источник
14

Поскольку я обнаружил это во время поиска в Google, вы должны знать, что этого простого правила достаточно, чтобы предотвратить появление этого сообщения:

react/jsx-uses-react

В react/recommendedнабор правил добавлено много других правил, которые могут вам не понадобиться.

Fiaxhs
источник
7

В моем случае мне нужно было добавить в ваш .eslintrc.js:

'extends': [
    'plugin:react/recommended'
]

плюс специальная настройка, чтобы избавиться от предварительного импорта: import { h } from 'preact'но вы можете использовать этот пример, чтобы избавиться от ваших конкретных предупреждений, например:

    "no-unused-vars": [
        "error",
        {
            "varsIgnorePattern": "^h$"
        }
    ],
Пикард
источник
1

Самое быстрое исправление

Чтобы игнорировать все переменные TitleCase, добавьте это в конфигурацию ESLint:

{
    "rules": {
        "no-unused-vars": [
            "error",
            {
                "varsIgnorePattern": "^[A-Z]"
            }
        ]
    ]
}

Правильное исправление

Используйте eslint-plugin-response, чтобы игнорировать переменные React.

npm install eslint-plugin-react -D

Добавьте это в свою конфигурацию ESLint:

{
    "plugins": [
        "react"
    ],
    "rules": {
        "react/jsx-uses-vars": "error",
        "react/jsx-uses-react": "error"
    }
}

Предлагаемое исправление

Используйте eslint-plugin-response, чтобы улучшить использование JSX, а не только для того, чтобы заглушить эту ошибку.

npm install eslint-plugin-react -D

Добавьте это в свою конфигурацию ESLint:

{
    "extends": [
        "plugin:react/recommended"
    ]
}

Если вы используете XO , обратитесь к eslint-config-xo-react .

Fregante
источник
-1

Если вы создаете проект с помощью интерфейса командной строки create-react-app, вы можете npm run ejectотредактировать поле "eslintConfig" package.json, например:

`"eslintConfig": {
    "extends": "react-app",
    "rules": {
      "eqeqeq": "off",
      "no-unused-vars": "off",
    }
  },`

интернет-магазин будет закрыт

Джек L
источник