繁体   English   中英

调度操作后更新商店

[英]Updating Store after Dispatching an Action

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

正确的方法是

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM