调度操作后更新存储



我有一个社交媒体网站,用户可以在这里喜欢/不喜欢帖子。我有一个减速器为用户和帖子。我的队友实现了点赞/不点赞功能,如下所示:每当用户喜欢某个帖子时,客户端都会使用ENDPOINT调用我的API"posts/:id/like",这将增加帖子数据库中该帖子的点赞计数,并将该帖子添加到用户数据库

dispatch({
type: LIKE_POST_SUCCESS,
payload: res.payload.post
})
dispatch({
type: UPDATE_USER_SUCCESS,
payload: res.payload.user
})

以及以下减速器

case LIKE_POST_SUCCESS:
return {
...state,
...action.payload
}
case UPDATE_USER_SUCCESS:
return {
...state,
...action.payload
}

这种方法是有效的,但我觉得他的方法在中似乎很粗糙

  1. 即使ENDPOINT用于帖子数据库,API请求也会将更新的用户与更新的帖子一起返回
  2. 他正在派遣";UPDATE_USER_SUCCESS";以更新redux存储中的用户对象,即使没有调用更新用户API

正确的方法是吗

  1. 调用Like Post请求
  2. 使用Like post Request中的有效负载更新post store
  3. 执行";获取";对用户数据库的请求
  4. 使用来自";获取";请求

根据您的问题,需要做的基本上是当用户喜欢帖子时,应该首先更新帖子数据库,只有在成功响应后,您才能更新用户数据库。因此,你提到的方法似乎是正确的。

是的,我同意你的方法,是的,他的方法很粗糙
IMO,如果POST失败,他将继续发送到存储。这将导致错误的数据。或者,如果后端api返回201状态代码,但有错误,例如用户没有在后端更新,但在前端更新,则假设用户已更新。因此,这将导致前端数据错误。

相关内容

  • 没有找到相关文章

最新更新