54sword / xiaoduyu.com

🐟小度鱼 - 年轻人的交流社区 https://www.xiaoduyu.com
598 stars 148 forks source link

返回页面不请求数据 #13

Closed GZWZC closed 6 years ago

GZWZC commented 7 years ago

点击首页item->详情页,返回到首页的时候没有请求数据 你好,我想问一下你是怎么处理的

54sword commented 7 years ago

使用了react-redux,只要页面不刷新,数据可以储存起来,下次使用

GZWZC commented 7 years ago

@54sword 我也已经使用了react-redux ,但是我没有用服务端渲染第一屏,所以我每次componentWillMount的时候都会去getData一次,所以每次返回都会去加载,然而我不想每次都加载,我应该怎么做,shouldUpdate的时候每次对比前后的数据,其实是一样的,但是因为对象不一样,都返回了props!=props的结果,

54sword commented 7 years ago

数据储存: https://github.com/54sword/xiaoduyu.com/blob/master/src/reducers/posts.js 这个文件是储存所有 posts 的数据,其中有一个 getPostsById 方法是通过 id 查询数据中的 posts

显示逻辑: https://github.com/54sword/xiaoduyu.com/blob/master/src/containers/posts-detail/index.js 这里是页面逻辑,在 componentDidMount 时候,我会判断 posts 是否存在(这里的 posts 是通过,getPostsById 获得的),如果存在那么就可以直接显示帖子,如果不存在则发送请求加载该帖子,并储存到 reducers 的 posts 里面(这里注意要返回新的对象,这样才会触发 redux 的更新)

代码中61行 if (!posts) { } 被我注解了,是因为我想向服务器,更新页面浏览次数+1,所以你实现的时候,需要判断一下。