Closed3

React useIdの生成方式

KanonKanon

これの理由について社内勉強会で考察してた。

KanonKanon

と言っても答えはここにある。

ハイドレーションがあると、クライアント側でDOMが変わる。

クライアントコンポーネントがハイドレートされる順序は、サーバ HTML が出力された順序と一致しない可能性があるため、これをインクリメントカウンタで保証することは非常に困難です。

こうあるわけで、クライアント側ではJSが非同期で読み込まれる場合があるため、カウンタを使うとIDの順序がサーバー側とバラバラになる。なので、順序を保証できない。

React 内部では、呼び出し元コンポーネントの “親のパス (parent path)” から useId が生成されます。

とあるため、増分カウンタではなくこっちの方法であれば、一致するIDが生成できるってわけ。

サーバ上とクライアント上でレンダーされるツリーが正確に一致しない場合、生成される ID は一致しません。

この一致しない理由もID生成の方式によるため。

このスクラップは1ヶ月前にクローズされました