ESLint对a标签href属性警告解决方法

5,904 阅读3分钟

一、问题解决方法

1、环境介绍:

通过React的官方教程 Create-React-App使用脚手架工具搭建的工程,然后添加了路由组件React-Router,样式组件Antd Design(简称antd)。

在antd的的Table组件中是这样添加行操作的

<a href="javascript:;">{text}</a>

2、警告描述:

The href attribute is required for an anchor to be keyboard accessible.
Provide a valid, navigable address as the href value.
If you cannot provide an href, but still need the element to resemble a link, use a button and change it with appropriate styles. 
Learn more: https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/anchor-is-valid.md  jsx-a11y/anchor-is-valid

3、解决方法:

3.1、运行 npm run eject

然后根据提示安装缺少的组件。

3.2、添加配置

在package.json文件中添加如下代码

"eslintConfig": {
    "extends": "react-app",
    "rules":{
      "jsx-a11y/anchor-is-valid":"off"
    }
  }

然后修改代码为

<a href="">{text}</a>

然后就可以消除警告,问题解决!

二、解决过程

1、阅读控制台提示信息

首先打开警告提示中的链接地址 里面解释为什么会出现这个问题,以及关于各种用法的处理方法,但是不够通用。寻求配置方法

2、寻找官方资料

打开ESLint官网,找到用户指南下的配置教程,阅读之后收获如下:

2.1、配置方式

  1. Configuration Comments : 使用 JavaScript 注释把配置信息直接嵌入到一个代码源文件中。
  2. Configuration Files : 使用 JavaScript、JSON 或者 YAML 文件为整个目录(处理你的主目录)和它的子目录指定配置信息。可以配置一个独立的 .eslintrc.* 文件,或者直接在 package.json 文件里的 eslintConfig 字段指定配置,ESLint 会查找和自动读取它们,再者,你可以在命令行运行时指定一个任意的配置文件。

2.2、文件配置方式优先级

ESLint 支持几种格式的配置文件:

  • JavaScript - 使用 .eslintrc.js 然后输出一个配置对象。
  • YAML - 使用 .eslintrc.yaml 或 .eslintrc.yml 去定义配置的结构。
  • JSON - 使用 .eslintrc.json 去定义配置的结构,ESLint 的 JSON 文件允许 JavaScript 风格的注释。
  • (弃用) - 使用 .eslintrc,可以使 JSON 也可以是 YAML。
  • package.json - 在 package.json 里创建一个 eslintConfig属性,在那里定义你的配置。

如果同一个目录下有多个配置文件,ESLint 只会使用一个。优先级顺序如下:

  1. .eslintrc.js
  2. .eslintrc.yaml
  3. .eslintrc.yml
  4. .eslintrc.json
  5. .eslintrc
  6. package.json

2.3、启用停用规则

配置规则关键字如下

  • "off" 或 0 - 关闭规则
  • "warn" 或 1 - 开启规则,使用警告级别的错误:warn (不会导致程序退出)
  • "error" 或 2 - 开启规则,使用错误级别的错误:error (当被触发的时候,程序会退出)

2.4 运行 npm run eject

然后根据提示安装缺少的组件。 运行该命令允许自定义配置,参考链接

2.5 配置规则

根据控制台提示连接中的 Rule details 章节知道关于href属性校验的规则名称叫jsx-a11y/anchor-is-valid ,配置package.json文件如下即可解决问题

"eslintConfig": {
    "extends": "react-app",
    "rules":{
      "jsx-a11y/anchor-is-valid":"off"
    }
  }

2.5 然后修改代码为

<a href="">{text}</a>