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 stringreturn <div id={id}>Unique ID Component</div>;}
最佳实践
- 用于可访问性:将标签链接到输入时,始终使用
useId
以确保可访问性。 - 避免硬编码 ID:不要硬编码 ID,而是使用
useId
动态生成它们。 - 一致使用:在整个应用程序中一致地使用
useId
以避免 ID 冲突。