reactjs - 如何使用 ESLint 捕获 React 中未声明的变量?

标签 reactjs webpack undefined eslint

有一天我注意到 ESLint 允许我使用 undefined variable 。这是一个简单的例子:

import React from 'react';

export default class test extends React.Component {
    render(){
        var a = b;
        var b = 1;
        return <h1>{a}</h1>
    }
}

带有 ESLint 插件的 Visual Studio Code 不会在第一个“b”下绘制红线。 使用 webpack 编译时,没有 eslint 错误。 在浏览器中运行时,控制台甚至不会记录任何错误。 我知道出现问题的唯一方法是屏幕上没有显示任何内容。

奇怪的是,如果我删除“var b = 1”,ESLint 会给我一个错误,说 b 未定义。

这是我的 eslint 配置;没什么特别的

{
"parser":"babel-eslint",
"plugins":[
    "react"
],
"rules":{ },
"extends":["eslint:recommended", "plugin:react/recommended"]

}

这里有什么问题吗?我如何配置 ESLint 来捕获将来类似的错误?

谢谢

最佳答案

您要查找的规则是no-use-before-define :

This rule will warn when it encounters a reference to an identifier that has not yet been declared.

您正在使用推荐的配置 - 其中未启用该规则。要使用它,您需要显式启用它:

{
  "parser":"babel-eslint",
  "plugins":[
    "react"
  ],
  "rules":{
    "no-use-before-define": "error"
  },
  "extends":["eslint:recommended", "plugin:react/recommended"]
}

关于reactjs - 如何使用 ESLint 捕获 React 中未声明的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45072987/

相关文章:

php - 未定义索引 : query in, 将 mysql 转换为 mysqli

javascript - 为什么 Angular 使用的对象是未定义的?

javascript - 如何在 React Native 中使用引用更改 TextInput 的值?

reactjs - 如何在 React Native 屏幕之间共享状态?

javascript - 自定义 “import” 使用 webpack 的方式

c++ - undefined reference ,编译错误

reactjs - 无法为 react-admin 在 EDIT 模式下使用 ImageField 上传图像

javascript - “redux-saga”不能异步工作

css - Webpack 4 以错误的顺序导入 SCSS 文件

import - Webpack/typescript 需要工作但导入不