ReactJS 教程

ReactJS 主页 ReactJS 简介 ReactJS 路线图 ReactJS 下载安装和环境配置 ReactJS 功能 ReactJS 优势和缺点 ReactJS 架构 ReactJS 创建 React 应用程序 ReactJS JSX ReactJS 组件 ReactJS 嵌套组件 ReactJS 使用组件 ReactJS 集合组件 ReactJS 样式 ReactJS 属性 (props) ReactJS 使用属性创建组件 ReactJS props 验证 ReactJS 构造函数 ReactJS 组件生命周期 ReactJS 事件管理 ReactJS 创建事件感知组件 ReactJS Expense Manager 事件 ReactJS 状态管理 ReactJS 状态管理 API ReactJS 无状态组件 ReactJS Hooks 进行状态管理 ReactJS Hooks 的组件生命周期 ReactJS 布局组件 ReactJS 分页 ReactJS Material UI ReactJS Http 客户端编程 ReactJS 表单编程 ReactJS 受控组件 ReactJS 非受控组件 ReactJS Formik ReactJS 条件渲染 ReactJS 列表 ReactJS Key 键 ReactJS 路由 ReactJS Redux ReactJS 动画 ReactJS Bootstrap ReactJS Map ReactJS 表格 ReactJS 使用 Flux 管理状态 ReactJS 测试 ReactJS CLI 命令 ReactJS 构建和部署 ReactJS 示例

Hooks

ReactJS Hooks 简介 ReactJS 使用 useState ReactJS 使用 useEffect ReactJS 使用 useContext ReactJS 使用 useRef ReactJS 使用 useReducer ReactJS 使用 useCallback ReactJS 使用 useMemo ReactJS 自定义 Hooks

ReactJS 高级

ReactJS 可访问性 ReactJS 代码拆分 ReactJS 上下文 ReactJS 错误边界 ReactJS 转发 Refs ReactJS 片段 ReactJS 高阶组件 ReactJS 与其他库集成 ReactJS 优化性能 ReactJS Profiler API ReactJS Portals ReactJS 不使用 ES6 ECMAScript ReactJS 不使用 JSX 的 React ReactJS Reconciliation ReactJS Refs 和 DOM ReactJS 渲染道具 ReactJS 静态类型检查 ReactJS 严格模式 ReactJS Web 组件

其他概念

ReactJS 日期选择器 ReactJS Helmet ReactJS 内联样式 ReactJS PropTypes ReactJS BrowserRouter ReactJS DOM ReactJS 轮播 ReactJS 图标 ReactJS 表单组件 ReactJS 参考 API

ReactJS 有用资源

ReactJS 快速指南 ReactJS 备忘录 Axios 备忘录 ReactJS 有用资源 ReactJS 讨论


ReactJS - 可访问性

可访问性 (a11y) 是以这样一种方式设计 Web 应用程序,即应用程序可供所有人访问,并支持辅助技术为最终用户读取应用程序的内容。

React 支持 Web 应用程序中可访问性的所有方面。让我们在本章中看看 React 如何支持可访问性。

ARIA (aria-*) 属性

WAI-ARIA(Web 可访问性倡议 - 可访问的富互联网应用程序)是一种标准,指定了构建完全可访问的 JavaScript 小部件的方法。它提供了一大组 HTML 属性 (aria-*) 来支持可访问性。React 在其组件中支持所有这些属性。一般情况下,React 会限制 HTML 属性采用 camelCase 格式,但对于可访问性属性,则应采用 kebab-case 或 lisp-case 格式,或者直接按照 HTML 文档中的格式使用。

例如,以下代码展示了如何使用 HTML 可访问性属性。

<input
   type="text"
   aria-label={labelText}
   aria-required="true"
   name="name"
/>

此处,

  • aria-label 用于指定输入元素的标签

  • aria-required 用于指定应填写的输入。

请注意,属性按原样使用(kebab-case 格式)。

语义 HTML

通过应用语义 HTML(文章、部分、导航等)标签编码的 Web 文档可提高文档的可访问性。在 React 中,有些情况下我们使用块(div)只是为了满足 React 框架。例如,React 在其渲染代码中不支持多个标签。为了克服限制,开发人员可以使用父标签(div)将多个标签作为子标签。

function ShowItems({ data }) {
   return (
      <div>
         <dt>{data.title}</dt>
         <dd>{data.description}</dd>
      </div>
   );
}

React 提供了 Fragment 组件来解决此问题。我们只需替换 Fragment 即可,如下所示 −

function ShowItems({ data }) {
   return (
      <Fragment>
         <dt>{data.title}</dt>
         <dd>{data.description}</dd>
      </Fragment>
   );
}

表单

每个输入都应贴上标签,并且标签应具有描述性,以便理解输入元素。React 提供了一个特殊的 props htmlFor 来指定输入元素的具体描述。开发人员可以使用它来创建可访问的表单。

<label htmlFor="firstName">Firstname:</label>
<input id="firstName" type="text" name="name"/>

键盘支持

键盘支持是创建可访问的 Web 应用程序的必备条件。一些需要键盘支持的功能包括:

Focus − React 提供了一个名为 Ref 的概念来访问原始 DOM 元素。当应用程序需要对 DOM 元素进行原始访问时,可以使用 Ref 和 转发 Ref 来管理原始 DOM 元素。

跳过链接 − 跳过导航链接是支持可访问性的必备功能。它们允许用户在仅使用键盘访问应用程序时一次性跳过所有导航。可以使用智能锚标记来完成,React 完全支持这些标记。

<body>
<a href="#maincontent">Skip to main content</a>
...
<main id="maincontent">
   ...
</main>

鼠标和指针功能 − 要创​​建真正可访问的应用程序,所有功能都应通过键盘访问。应将具有高级鼠标和指针用户交互的组件更改为仅适应键盘用户交互。React 提供所有事件处理逻辑,以将默认的基于鼠标的 UI 修改为基于键盘的 UI。

Aria 组件

React 社区提供了许多具有完全可访问性的组件。它们可以按原样使用,无需任何修改。它们会自动使应用程序可访问。一些具有 aria 支持的第三方组件如下 −

  • react-aria − react-aria 提供了具有完全可访问性的大量 React 组件

  • react-modal − react-modal 提供了具有 aria 支持的模态组件。

  • react-aria-modal − react-aria-modal 是另一个支持 aria 的模式组件。

  • react-select − react-select 提供支持 aria 的选择组件。

  • react-dropdown-aria − react-dropdown-aria 提供支持 aria 的下拉组件。

  • react-aria-menubutton − react-aria-menubutton 提供支持 aria 的菜单按钮组件。

  • react-aria-tabpanel − react-aria-tabpanel 提供支持 aria 的选项卡面板组件。

摘要

React 提供了许多功能来创建完全可访问、支持 aria 的 Web 应用程序。创建可访问的应用程序始终是一项挑战,而 React 以现成的组件和核心功能的形式减轻了负担,可以从头开始编写可访问的应用程序。