一、问题解决方法
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、阅读控制台提示信息
首先打开警告提示中的链接地址
里面解释为什么会出现这个问题,以及关于<a>各种用法的处理方法,但是不够通用。寻求配置方法
2、寻找官方资料
打开ESLint官网,找到用户指南下的配置教程,阅读之后收获如下:
2.1、配置方式
- Configuration Comments : 使用 JavaScript 注释把配置信息直接嵌入到一个代码源文件中。
- 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 只会使用一个。优先级顺序如下:
- .eslintrc.js
- .eslintrc.yaml
- .eslintrc.yml
- .eslintrc.json
- .eslintrc
- 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>