我使用 React、React 路由器和 Redux 实现了单页应用程序。它使用通用渲染。
有一个 React 组件 ArticleListComponent 可以显示新闻文章列表。单击移动浏览器的后退按钮时,React 生命周期函数componentWillReceiveProps会比较来自当前 props 和 nextProps 的路由(如下面的片段所示)并相应地获取数据。
componentWillReceiveProps (nextProps) {
var prevUrlParam = this.props.match.params;
var nextUrlParam = nextProps.match.params;
if(prevUrlParam === nextUrlParam) {
return;
}
// else data fetch for previous page
}
根据文档 ( https://facebook.github.io/react/docs/react-component.html#componentwillreceiveprops ),只有在挂载的组件接收到新的 props 时才会调用 componentWillReceiveProps。这适用于所有移动浏览器,UC 浏览器除外。
在UC浏览器上,第一次加载服务端渲染页面,组件挂载后,调用componentWillReceiveProps,发现(prevUrlParam === nextUrlParam)为false,导致数据被拉取。
React 生命周期函数对于不同浏览器的工作方式是否不同,或者这是否是 UC 浏览器的错误?