我有一个使用ReactJS构建的网站,我试图在componentDidMount方法中添加一个使用AJAX获取数据的新页面。
该页面有一些静态组件,例如导航条和页脚,它在获取数据之前显示一个加载程序,但奇怪的是,当我提交url作为Google进行抓取时,它显示的是一个完全空白的页面。
对我来说,这似乎很奇怪,因为我预期如果Google不等待我的AJAX调用的返回,它至少应该向我展示作为Google结果的Fetch中的导航条、脚注和加载程序。
这就是密码:
import React from 'react';
import axios from 'axios';
import CustomLoader from './CustomLoader';
import AppBar from './AppBar';
export default class GamePage extends React.Component{
constructor(){
super();
this.state={loading:true,description:''};
}
componentDidMount(){
axios.get(`/someinternalAPI`).then((response)=>{
this.setState({description:response.data,loading:false});
});
}
render(){
return(<div>
<AppBar />
{this.state.loading ? <CustomLoader /> : this.state.description}
</div>);
}
}发布于 2017-08-29 11:57:14
简单地说,Google的爬虫不解析动态内容。
好的做法是确保动态加载的内容也可以在静态链接上访问,所以当您导航到“yourwebsite.com/page1 1”时,它至少应该显示通常加载了axios的静态文本,这样爬虫就可以知道您的网站/应用程序上的内容。
进一步的解决办法将是利用服务器端呈现,这是搜索引擎优化友好,并解决问题,如你,因为它预先在服务器端的所有内容和网站本身,并提供完整的网站。
https://stackoverflow.com/questions/45936969
复制相似问题