我有一个在客户端呈现的反应应用程序。现在我有一个组件,我想在服务器端呈现。我这样做是因为组件将从json构造其布局,我不想在服务器上解析json一次,并且再次在客户端上解析组件。
现在,我正在做renderToString(<Component/>)
并将其发送给客户。然后客户端执行ReactDOM.hydrate(component,document.getElementById('someDivId'))
。但它只将组件呈现为字符串。它不会将其渲染为元素。我尝试呈现组件的容器是客户端呈现的反应应用程序。
示例代码如下
server.js
app.get('/component/:id',(req,res,next)=>{
const markup = renderToString(
<div>Hello</div>
)
let jsonModel = {
markup
}
return res.json(jsonModel);
})
client.js
getComponent(id).then(data => {
ReactDOM.hydrate(data.markup, document.getElementById('someDivId'));
});
是否可以在服务器端只渲染一个组件?或者我是否必须在服务器端渲染整个应用程序?