【问题标题】:Updating Store after Dispatching an Action调度操作后更新商店
【发布时间】:2021-11-19 05:13:25
【问题描述】:

我有一个社交媒体网站,用户可以在其中喜欢/不喜欢帖子。我有一个用于用户和帖子的减速器。我的队友实现了喜欢/不喜欢的功能,如下所示:每当用户喜欢一个帖子时,客户端会使用 ENDPOINT 'posts/:id/like' 调用我的 API,这将增加 Post 中帖子的点赞数数据库并将帖子添加到用户数据库中用户的点赞帖子数组中。 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. 即使 ENDPOINT 用于 posts 数据库,API 请求也会在更新的帖子旁边返回更新的用户。
  2. 即使未调用更新用户 API,他仍在调度“UPDATE_USER_SUCCESS”以更新 redux 存储中的用户对象。

正确的方法是

  1. 调用 Like Post 请求
  2. 使用来自 Like Post 请求的负载更新 post 存储
  3. 对用户数据库执行“GET”请求
  4. 使用来自“GET”请求的负载更新用户存储

【问题讨论】:

    标签: javascript redux react-redux redux-store


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2023-03-25
        • 2016-12-18
        • 1970-01-01
        • 2015-08-13
        • 2021-09-23
        • 1970-01-01
        • 2020-08-23
        • 2019-08-04
        • 1970-01-01
        相关资源
        最近更新 更多