react-router 当浏览器前进和后退时,能不能不触发componentDidMount?

如题,

使用 react-router每次浏览器前进和后退时,都会触发组件的componentDidMount,然后重新获取数据。

本来在一个列表页,使用『下拉加载更多』功能都加载了好几页数据了。然后点击某一项,进入详情页面。然后再后退,就触发了列表页组件的componentDidMount,然后就又重新获取数据了。

何解?

阅读 9.2k
3 个回答

hello!
针对你这样的需求,可以在首次render组件时将获取的数据存在state中,在componentDidMount判断该数据的长度> 0 ?,从而决定是否要fetch数据。

可以试一下我造的轮子 https://github.com/fi3ework/r...
完全兼容 react-router-v4
在指定的路径下隐藏(缓存),返回时显示(取出缓存),在其他路径下正常卸载,并且能够恢复滚动位置。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题