0

我使用 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 浏览器的错误?

4

0 回答 0