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 以现成的组件和核心功能的形式减轻了负担,可以从头开始编写可访问的应用程序。