如何强制 React 接受服务器标记
How to force React to accept server markup
在第一次加载时,我将我的标记完全填满服务器上的数据。
这很好用,在客户端 React 接管之前,客户端将其视为静态 html。但是这个客户端代码丢弃了标记。
我阻止 React 在第一次加载时请求每个 AJAX 的数据(因为它已经存在),只有当我使用 react-router <Link>
导航到它的客户端时。
但我不能强迫它简单地让标记存在,直到用户与之交互。
您可以使用 dangerouslySetInnerHTML
属性。例如,像这样创建一个新的组件包装器并设置 html
属性:
export default React.createClass({
render: function() {
return <div dangerouslySetInnerHTML={ this.createMarkup() }>
</div>;
},
componentDidMount: function() {
// attach some events
},
componentWillUnmount: function() {
// detach some events
},
shouldComponentUpdate: function() {
return false;
},
createMarkup: function() {
return {
__html: this.props.html
};
}
});
在第一次加载时,我将我的标记完全填满服务器上的数据。
这很好用,在客户端 React 接管之前,客户端将其视为静态 html。但是这个客户端代码丢弃了标记。
我阻止 React 在第一次加载时请求每个 AJAX 的数据(因为它已经存在),只有当我使用 react-router <Link>
导航到它的客户端时。
但我不能强迫它简单地让标记存在,直到用户与之交互。
您可以使用 dangerouslySetInnerHTML
属性。例如,像这样创建一个新的组件包装器并设置 html
属性:
export default React.createClass({
render: function() {
return <div dangerouslySetInnerHTML={ this.createMarkup() }>
</div>;
},
componentDidMount: function() {
// attach some events
},
componentWillUnmount: function() {
// detach some events
},
shouldComponentUpdate: function() {
return false;
},
createMarkup: function() {
return {
__html: this.props.html
};
}
});