ESLint với React đưa ra lỗi `không-không-dùng-vars`


86

Tôi đã thiết lập eslint& eslint-plugin-react.

Khi tôi chạy ESLint, linter trả về no-unused-varslỗi cho từng thành phần React.

Tôi cho rằng nó không nhận ra rằng tôi đang sử dụng cú pháp JSX hoặc React. Có ý kiến ​​gì không?

Thí dụ:

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

Lỗi 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

Đây là .eslintrc.jsontệp của tôi :

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

Bạn đang nhập Reacttrong khi không sử dụng nó, bạn chỉ đang sử dụng Component, được nhập chính xác.
GMaiolo

Điều đó có lý - nhưng tại sao Headercũng có lỗi? (Bạn thực sự cần nhập React, nếu không khi JSX được chuyển đổi, nó sẽ báo lỗi)
Don P

Điều này không nên xảy ra bây giờ. Phiên bản eslint của bạn là gì? github.com/eslint/eslint/issues/1905
daniloprates

Câu trả lời:


175

Trong .eslintrc.json, dưới của bạn , extendshãy bao gồm plugin sau:

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

Nguồn


1
Câu trả lời tuyệt vời. Tất nhiên bạn nên làm trước (npm install --save-dev eslint-plugin-
react

Còn nếu bạn sử dụng airbnb? Tôi đã thử thêm 'plugin: react / Recommend' trước đây nhưng nó không hoạt động. : đẹp hơn / được đề xuất "," đẹp hơn / phản ứng ",],
jonny-harte

Đây là tài liệu có thẩm quyền ... github.com/yannickcr/eslint-plugin-react#recommended
Ken Lin

58

Để giải quyết vấn đề này duy nhất mà không cần thêm các quy tắc mới từ react/recommendedcài đặt eslint-plugin-react:

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

thêm vào .eslintrc.js:

"plugins": ["react"]

và:

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

14

Vì tôi đã tìm thấy điều này trong khi googling, bạn nên biết rằng quy tắc đơn giản này là đủ để ngăn thông báo này:

react/jsx-uses-react

Bộ react/recommendedquy tắc bổ sung nhiều quy tắc khác mà bạn có thể không muốn.


7

Trong trường hợp của tôi, tôi cần thêm vào .eslintrc.js:

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

cộng với một điều chỉnh cụ thể để loại bỏ tính năng nhập chính xác: import { h } from 'preact'nhưng bạn có thể sử dụng ví dụ này để loại bỏ các cảnh báo cụ thể như sau:

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

1

Sửa chữa nhanh nhất

Để bỏ qua tất cả các biến TitleCase, hãy thêm biến này vào cấu hình ESLint của bạn:

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

Sửa chữa đúng

Sử dụng eslint-plugin-react để bỏ qua các biến React.

npm install eslint-plugin-react -D

Thêm cái này vào cấu hình ESLint của bạn:

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

Đề xuất sửa chữa

Sử dụng eslint-plugin-react để cải thiện việc sử dụng JSX của bạn, không chỉ để chặn lỗi này.

npm install eslint-plugin-react -D

Thêm cái này vào cấu hình ESLint của bạn:

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

Nếu bạn sử dụng XO , hãy tham khảo eslint-config-xo-react .


-1

Nếu bạn tạo dự án thông qua CLI create- npm run ejectreact -app, Bạn có thể và chỉnh sửa trường "eslintConfig" của package.json, như sau:

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

eslint sẽ bị đóng cửa

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.