アクセシビリティ属性(htmlFor, aria-labelledby等)に使うための一意なIDを生成する。SSRとCSRで一致するIDが生成される。
const id = useId()
const id = useId(); // ':r0:', ':r1:' のような文字列import { useId } from 'react';
// 複数のフォームフィールドがある場合でも安全
function FormField({ label, type = 'text' }: {
label: string;
type?: string;
}) {
const id = useId();
return (
<div>
<label htmlFor={id}>{label}</label>
<input id={id} type={type} aria-describedby={`${id}-desc`} />
<span id={`${id}-desc`}>説明テキスト</span>
</div>
);
}
// 何度使っても一意なIDが保証される
function Form() {
return (
<form>
<FormField label="名前" />
<FormField label="メール" type="email" />
</form>
);
}useIdはリストのkeyには使えない(レンダー毎に変わる可能性があるため)。あくまでアクセシビリティ属性専用。