我有反应应用程序使用服务器端渲染。我使用react-helmet来显示动态元标记。一切都是完美的设置。动态元标记也正确显示给浏览器,但在服务器端它采用未定义的值。有没有人告诉我它的解决方案该怎么做。
例如 :
var React = require('react');
var Helmet = require('react-helmet');
var About = React.createClass({
getInitialState: function(){
return {
title: "",
description: "",
}
},
componentDidMount: function(){
$.ajax({
url: api_url+'/get_meta',
type: 'POST',
dataType: 'json',
async: false,
success: function( response ) {
if( response.status==200 ){
this.setState({title: response.title, description: response.title });
}
}
});
},
render: function() {
var title = this.state.title;
var description = this.state.description;
return (
<div>
<Helmet
title={title}
meta={[
{"name": "description", "content": description }
]}
/>
<p>
This is the title page
</p>
</div>
);
}
});
module.exports = About;
当我查看源代码时,它不会在元标记中显示任何内容,但是当我检查浏览器元素时,它会显示元标记值。经过一段时间的调试,我发现了问题,该组件同时呈现服务器端和客户端,因此在服务器端它仅呈现具有初始状态的组件,这就是为什么不显示该值的原因。
请任何人建议该怎么做?