谈谈 useId
是什么
useId 是一个用于生成横跨服务端和客户端的稳定的唯一 ID 的同时避免 hydration 不匹配的 hook。
使用场景
如果当前组件已经在服务端渲染过了,但是在客户端我们并没有什么手段知道这个事情,于是客户端还会重新再渲染一次,这样就造成了冗余的渲染。
- React 在服务端渲染,生成随机 id(假设为 0.1234),这一步叫 dehydrate(脱水)
<div id="0.12345">Hello</div>
作为 HTML 传递给客户端,作为首屏内容- React 在客户端渲染,生成随机 id(假设为 0.6789),这一步叫 hydrate(注水)
客户端、服务端生成的 id 不匹配!