分派操作后更新商店

问题描述 投票:0回答:2

我有一个社交媒体网站,用户可以在其中喜欢/不喜欢帖子。我有一个用于用户和帖子的减速器。我的队友实现了喜欢/不喜欢功能,如下所示:每当用户喜欢某个帖子时,客户端都会使用 ENDPOINT 'posts/:id/like' 调用我的 API,这将增加 Post Database 中该帖子的喜欢计数并将帖子添加到用户数据库中用户喜欢的帖子数组中。 API 将返回包含更新的用户和帖子的响应,这将导致以下操作。

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. API 请求还会返回更新后的用户以及更新后的帖子,即使 ENDPOINT 用于 posts 数据库
  2. 即使未调用更新用户 API,他也会调度“UPDATE_USER_SUCCESS”来更新 redux 存储中的用户对象。

正确的做法是

  1. 调用赞帖子请求
  2. 使用 Like Post 请求中的有效负载更新帖子存储
  3. 向用户数据库执行“GET”请求
  4. 使用“GET”请求中的有效负载更新用户存储
javascript redux react-redux
2个回答
0
投票

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


0
投票

是的,我同意你的方法,是的,他的方法很黑客。
IMO,如果 POST 失败,他会继续向商店发货。这会导致错误的数据。 或者,如果后端 api 返回 201 状态代码,但有错误,例如用户未在后端更新,但在前端,您假设用户已更新。因此,这会导致前端数据错误。

© www.soinside.com 2019 - 2024. All rights reserved.