的 alt 属性以通过无障碍校验
" />
react 项目中使用 `jsx-a11y/img-redundant-alt` 规则时,若 `alt` 属性包含“image”“photo”或“picture”等冗余词,会触发警告;正确做法是用简洁、描述性文字替代冗余表述,或按需调整规则配置。
在构建可访问性(a11y)友好的 React 应用时, 标签的 alt 属性至关重要——它为屏幕阅读器用户提供图像内容的文本替代。但 ESLint 插件 eslint-plugin-jsx-a11y(常被误称为 react-a11y,后者已归档)中的 img-redundant-alt 规则会主动拦截“语义冗余”的 alt 值。
该规则默认禁止在 alt 中出现以下词汇:
- "image"
- "picture"
- "photo"
例如,以下写法会触发警告:
@@##@@ // ❌ 包含冗余词 "image" @@##@@ // ❌ 包含 "photo"
✅ 正确做法是聚焦图像的实际功能或含义,而非其媒体类型:
@@##@@ // ✅ 清晰、简洁、有意义 @@##@@ // ✅ 传达关键信息 @@##@@ // ✅ 功能型图标用动词/名词直述用途
⚠️ 特别注意:
- 对于纯装饰性图像(如分隔线、背景图案),应设为 alt=""(空字符串),并确保其不被屏幕阅读器聚焦(必要时加 role="presentation" 或 aria-hidden="true");
- SVG 图标若已通过 svg aria-hidden="true"> 显式隐藏(如题干中的灯泡图标),则不应再包裹
,更无需 alt —— 直接内联 SVG 或使用 组件更合理; - 若团队确有特殊术语规范(如必须保留 “diagram”),可通过 ESLint 配置自定义禁用词列表:
// .eslintrc.js
module.exports = {
rules: {
'jsx-a11y/img-redundant-alt': ['error', { components: ['Image'], words: ['image', 'photo', 'picture', 'diagram'] }],
}
};总结:alt 的本质是「为看不见图像的人提供等效信息」,而非标注文件类型。删掉“image”类冗余词,用精准、简练、上下文相关的描述取而代之,既满足无障碍要求,也提升代码语义质量。













