React ile ESLint "kullanılmayan vars" hataları veriyor


91

Kurdum eslint& eslint-plugin-react.

ESLint'i çalıştırdığımda, linter no-unused-varsher React bileşeni için hata veriyor.

JSX veya React sözdizimi kullandığımı fark etmediğini varsayıyorum. Herhangi bir fikir?

Misal:

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

Linter Hataları:

/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

İşte .eslintrc.jsondosyam:

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

Kullanmıyorken içe aktarıyorsunuz React, sadece kullanıyorsunuz Componentve doğru şekilde içe aktarılıyor.
GMaiolo 01

Bu mantıklı - ama neden Headerhata da olsun ki? (Aslında React'i içe aktarmanız gerekiyor, aksi takdirde JSX aktarıldığında bir hata verecektir)
Don P

Bu şimdiye kadar olmamalıydı. Senin eslint versiyonun nedir? github.com/eslint/eslint/issues/1905
daniloprates

Yanıtlar:


181

İlk önce aşağıdaki modülü kurun npm install --save-dev eslint-plugin-react.

Ardından, .eslintrc.jsonaltına extendsaşağıdaki eklentiyi ekleyin:

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

Kaynak


1
Harika cevap Elbette önce yapmalısınız (npm install --save-dev eslint-plugin-react)
skiabox

Airbnb kullanıyorsanız ne olacak? Daha önce 'eklenti: tepki ver / önerilir' eklemeyi denedim ama işe yaramadı: ["eklenti: tepki ver / önerilen", "airbnb", "airbnb / kancalar", "eklenti: react-redux / önerilen", "eklenti : güzel / önerilen "," güzel / tepki ",],
jonny-harte


60

Yüklemeden yeni kurallar eklemeden bu tek sorunu çözmek react/recommendediçin eslint-plugin-react:

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

ekle .eslintrc.js:

"plugins": ["react"]

ve:

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

14

Bunu Google'da bulduğum için, bu basit kuralın bu mesajı önlemek için yeterli olduğunu bilmelisiniz:

react/jsx-uses-react

react/recommendedKurallar kümesi ekler diğer birçok kural istediğiniz olmayabilir.


7

Benim durumumda şunu eklemem gerekiyor .eslintrc.js:

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

artı ön-aktarımdan kurtulmak için belirli bir ince ayar: import { h } from 'preact'ancak aşağıdaki gibi belirli uyarılarınızdan kurtulmak için bu örneği kullanabilirsiniz:

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

4

En hızlı düzeltme

Tüm TitleCase değişkenlerini yok saymak için bunu ESLint yapılandırmanıza ekleyin:

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

Doğru düzeltme

Kullanım eslint-eklentisi tepki değişkenleri Tepki görmezden.

npm install eslint-plugin-react -D

Bunu ESLint yapılandırmanıza ekleyin:

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

Önerilen düzeltme

Kullanım eslint-eklentisi-tepki bu hatayı susturmak için değil sadece, sizin JSX kullanımını geliştirmek.

npm install eslint-plugin-react -D

Bunu ESLint yapılandırmanıza ekleyin:

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

Eğer kullanırsanız XO , bakın eslint-config-xo-tepki .


-1

Create-react-app CLI ile projeyi oluşturursanız npm run eject, package.json "eslintConfig" alanını şu şekilde düzenleyebilir ve düzenleyebilirsiniz:

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

eslint kapanacak

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.