测验

React 中的 `useId` Hook 是什么?应该在什么时候使用?

主题
React
在GitHub上编辑

TL;DR

React 中的 useId Hook 用于为组件内的元素生成唯一的 ID。这对于可访问性目的特别有用,例如将表单输入与其标签链接起来。它确保 ID 在整个应用程序中是唯一的,即使组件被多次渲染。

import { useId } from 'react';
function MyComponent() {
const id = useId();
return (
<div>
<label htmlFor={id}>Name:</label>
<input id={id} type="text" />
</div>
);
}

React 中的 useId Hook 是什么?应该在什么时候使用?

useId 简介

useId Hook 是 React 18 中引入的内置 React Hook。它旨在生成可在组件内使用的唯一 ID。这对于确保 ID 在整个应用程序中是唯一的特别有用,即使组件被多次渲染。

什么时候使用 useId

可访问性

useId 的主要用例之一是改善可访问性。例如,在创建表单元素时,使用标签上的 htmlFor 属性和输入上的 id 属性将标签链接到其对应的输入非常重要。useId Hook 确保这些 ID 是唯一的,从而防止任何潜在的冲突。

import { useId } from 'react';
function MyComponent() {
const id = useId();
return (
<div>
<label htmlFor={id}>Name:</label>
<input id={id} type="text" />
</div>
);
}

动态组件

当您有动态渲染或多次渲染的组件时,使用 useId 可确保组件的每个实例都具有唯一的 ID。这可以防止多个元素最终具有相同的 ID,这可能会导致可访问性和 JavaScript 行为出现问题。

import { useId } from 'react';
function DynamicComponent() {
const id = useId();
return (
<div>
<label htmlFor={id}>Dynamic Input:</label>
<input id={id} type="text" />
</div>
);
}
function App() {
return (
<div>
<DynamicComponent />
<DynamicComponent />
</div>
);
}

useId 的工作原理

useId Hook 生成可用作 ID 的唯一字符串。此字符串在整个应用程序中是唯一的,即使组件被多次渲染,也能确保不会发生冲突。该 Hook 不接受任何参数并返回一个字符串。

import { useId } from 'react';
function ExampleComponent() {
const id = useId();
console.log(id); // Outputs a unique ID string
return <div id={id}>Unique ID Component</div>;
}

最佳实践

  • 用于可访问性:将标签链接到输入时,始终使用 useId 以确保可访问性。
  • 避免硬编码 ID:不要硬编码 ID,而是使用 useId 动态生成它们。
  • 一致使用:在整个应用程序中一致地使用 useId 以避免 ID 冲突。

延伸阅读

在GitHub上编辑