ESLint con React da errores `no-unused-vars`


86

He configurado eslint& eslint-plugin-react.

Cuando ejecuto ESLint, el linter devuelve no-unused-varserrores para cada componente de React.

Supongo que no reconoce que estoy usando la sintaxis JSX o React. ¿Algunas ideas?

Ejemplo:

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>
    );
  }
}

Errores de linter:

/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

Aquí está mi .eslintrc.jsonarchivo:

{
    "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"
        ]
    }
}

Está importando Reactmientras no lo usa, solo está usando Component, que se importa correctamente.
GMaiolo

Eso tiene sentido, pero ¿por qué Headertambién tendría el error? (En realidad se necesita importar Reaccionar, de lo contrario cuando el JSX se transpiled, se le dará un error)
Don P

Esto no debería estar sucediendo a estas alturas. ¿Cuál es tu versión de eslint? github.com/eslint/eslint/issues/1905
daniloprates

Respuestas:


175

En su .eslintrc.json, debajo extends, incluya el siguiente complemento:

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

Fuente


1
Gran respuesta Por supuesto que deberías hacerlo primero (npm install --save-dev eslint-plugin-react)
skiabox

¿Qué pasa si usas airbnb? Intenté agregar 'plugin: react / recommended' antes, pero no funcionó. : más bonita / recomendada "," más bonita / reacciona ",],
jonny-harte

Aquí está la documentación autorizada ... github.com/yannickcr/eslint-plugin-react#recommended
Ken Lin

58

Para resolver este único problema sin agregar nuevas reglas desde la react/recommendedinstalación eslint-plugin-react:

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

añadir .eslintrc.js:

"plugins": ["react"]

y:

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

14

Dado que encontré esto mientras buscaba en Google, debe saber que esta simple regla es suficiente para evitar este mensaje:

react/jsx-uses-react

El react/recommendedconjunto de reglas agrega muchas otras reglas que quizás no desee.


7

En mi caso, necesitaba agregar su .eslintrc.js:

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

más un ajuste específico para deshacerse de la importación de preact: import { h } from 'preact'pero puede usar este ejemplo para deshacerse de sus advertencias específicas de esta manera:

    "no-unused-vars": [
        "error",
        {
            "varsIgnorePattern": "^h$"
        }
    ],

1

Solución más rápida

Para ignorar todas las variables de TitleCase, agregue esto a su configuración de ESLint:

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

Arreglo correcto

Utilice eslint-plugin-react para ignorar las variables de React.

npm install eslint-plugin-react -D

Agregue esto a su configuración de ESLint:

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

Solución sugerida

Use eslint-plugin-react para mejorar su uso de JSX, no solo para silenciar este error.

npm install eslint-plugin-react -D

Agregue esto a su configuración de ESLint:

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

Si usa XO , consulte eslint-config-xo-react .


-1

Si crea el proyecto a través de la CLI create-react-app, puede npm run ejecteditar el campo package.json "eslintConfig", así:

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

el eslint estará cerrado

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.