我是React新手。我正在使用React、React Router4、React Redux等构建网站,在其中有一些组件在服务器上进行呈现(主要是使用API调用来获取数据并展示它们)。现在我的问题是,如果我在服务器上呈现组件并将呈现的HTML发送到客户端,它会再次在客户端上呈现(发起API调用),我需要避免这种情况。
如果组件已在服务器上呈现,我不想再次呈现组件。我该如何实现这个目标?
谢谢
Satish
如果组件已在服务器上呈现,我不想再次呈现组件。我该如何实现这个目标?
谢谢
Satish
dangerouslySetInnerHTML
。 renderTable() {
debug('render table');
const id = 'table-body';
const html = this.getExistingHtml(id);
if (html) {
return <tbody id={ id } dangerouslySetInnerHTML={{ __html: html }} />;
}
return <tbody id={ id }>{ this.renderItems() }</tbody>;
}
getExistingHtml(id) {
if (typeof document === 'undefined') return;
const node = document.getElementById(id);
return node && node.innerHTML;
}
renderItems() {
debug('render items');
return this.props.items.map(({ name, url }) => {
return (
<tr>
<td>
<a href={ url }>
<div>{ name }</div>
</a>
</td>
</tr>
);
});
}
shouldComponentUpdate() {
return false;
}
shouldComponentUpdate
,以防止初始挂载后的任何呈现。serialize-javascript
将数据作为全局状态传递到window
中。如果组件看到全局状态存在,则不会再次获取数据。您需要进行水合作用才能使其正常工作。 - dimiguel你可以使用来自 'react-dom' 的 hydrate
react-dom
中的hydrate
方法是无法实现OP所要求的功能的。 - Marcel M.