【发布时间】:2018-09-25 00:27:20
【问题描述】:
我在使用 React / Redux 构建的个人网站中使用 Contentful 作为 CMS,但我对如何处理数据的异步获取有点困惑。
对于我的网站,我有一个Blog 视图,其中列出了我的BlogPosts,单击其中一个将带您进入BlogPost 视图。在这两个组件中,我想在获取/加载这些元素时为其设置动画。
我有两个解决方案来处理获取和动画:
- 我当前的解决方案是在根目录
App.jsx中从componentDidMount()上的Contentful 获取所有帖子并填充Redux 存储键posts。这将是对 Contentful 的唯一 API 请求。然后在BlogPost组件中我会处理这样的事情:
BlogPost.jsx
componentDidMount() {
if (this.props.posts.length > 0) { this.animateIn() }
else { show loading spinner }
}
componentDidUpdate(nextProps) {
if (nextProps.posts.length > 0) { this.animateIn() }
}
如果用户从博客页面转到博客帖子页面,或者他们在博客帖子页面上刷新,我可以通过这种方式进行处理。
- 第二种解决方案是我在几个在线示例中看到的,例如this one。该示例发出多个请求,而不是一个 API 请求。所以在我的
BlogPost组件中,在挂载时,我会请求获取特定的帖子,然后进行填充。这样,我不会在componentDidUpdate和componentDidMount中重复代码,但它会添加更多 API 调用。
我倾向于坚持我目前的解决方案,但我想知道是否有任何经验丰富的 Contentful(或实际上任何 CMS 用户)对这种情况的最佳做法有任何意见。
【问题讨论】:
标签: wordpress reactjs redux contentful