1. hydrateRoot 与 Selective Hydration 在长阻塞组件的工程价值
hydrateRoot 与 Selective Hydration 是什么?Selective Hydration 在长阻塞组件场景的工程价值是什么?
- hydrateRoot 的水合语义
- Selective Hydration 的按需水合
- 长阻塞组件场景的收益
hydrateRoot(container, ) 是 React 19 的 SSR 水合入口:服务端渲染的 HTML 已在浏览器显示,hydrateRoot 把 React 组件树"接"到既有 DOM 上(不重建 DOM,只绑定事件与状态),形成可交互应用;与 createRoot(客户端渲染)不同,水合期间 React 假定 DOM 内容与服务端输出一致(不一致产生 mismatch 警告)。Selective Hydration(选择性水合)是并发特性:水合不再"整树一次完成",而是按需进行——浏览器空闲/用户交互时逐个边界水合(默认按 Suspense 边界 + 优先级),交互优先(用户点击的组件优先水合)、空闲批量水合其余。
长阻塞组件场景的工程价值:若某组件(大图表、富文本)水合昂贵(长任务阻塞主线程),传统整树水合会阻塞整个页面交互直到全部完成;Selective Hydration 下——页面其余部分先水合可交互,长阻塞组件的水合可被推迟/中断(水合是并发任务,可切片、可被输入打断)、被用户交互的组件优先水合;用户点击"未水合的组件"时 React 优先水合该组件(交互驱动的按需水合),感知延迟最小化。边界:水合本身仍要执行(只是编排更优);SSR 输出与客户端一致的约束不变;配合 Suspense 边界的流式内容,水合按边界进行;长阻塞组件应配合代码分割(React.lazy)让"长水合"与"按需加载"叠加;测量用 Performance 面板看水合长任务的切片与交互响应(INP)。
答题先讲 hydrateRoot 的水合语义(DOM 接管 + 一致性约束),再讲 Selective Hydration 的按需/优先级水合机制,最后落在长阻塞组件的"交互优先 + 可中断水合"价值与边界。