React 水合操作:服务端渲染与客户端渲染的桥梁
React 的'hydrate' 操作方式是将服务端渲染的 HTML 和客户端生成的 JavaScript 代码进行匹配和绑定,从而实现客户端渲染的过程。
具体操作步骤如下:
- 在服务端渲染时,使用
ReactDOMServer.renderToString()方法将 React 组件渲染成 HTML 字符串,并将其嵌入到 HTML 模板中。 - 在客户端渲染时,使用
ReactDOM.hydrate()方法将渲染好的 HTML 字符串和客户端生成的 JavaScript 代码进行匹配和绑定。 - 如果存在差异,例如在服务端渲染时生成的 HTML 与客户端渲染时生成的 HTML 不一致,React 会重新渲染组件,并更新 DOM。
- 完成 hydrate 操作后,React 将由客户端接管组件的渲染和事件处理,实现完整的客户端渲染过程。
示例代码:
服务端渲染:
const html = ReactDOMServer.renderToString(<App />); // 渲染为 HTML 字符串
const template = `
<!DOCTYPE html>
<html>
<head>
<title>My App</title>
</head>
<body>
<div id='root'>${html}</div> // 嵌入到模板中
<script src='client.js'></script>
</body>
</html>
`;
res.send(template); // 发送 HTML 模板
客户端渲染:
const rootElement = document.getElementById('root');
ReactDOM.hydrate(<App />, rootElement); // 水合渲染
原文地址: https://www.cveoy.top/t/topic/oPvZ 著作权归作者所有。请勿转载和采集!