调度动作后更新商店
Updating Store after Dispatching an Action
我有一个社交媒体网站,用户可以在其中 like/dislike posts。我有一个用于用户和 post 的减速器。我的小组伙伴实现了 like/dislike 功能,如下所示:每当用户喜欢 post 时,客户端调用我的 API 和 ENDPOINT 'posts/:id/like',这将增加Post 数据库 中的 post 并将 post 添加到 User 中用户喜欢的 posts 数组数据库。 API 将 return 包含更新的用户和 post 的响应,这将导致以下操作。
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
}
这种方法行得通,但我觉得他的方法在这方面显得老套
- API 请求也 return 将更新的用户与更新的 post 一起发送,即使 ENDPOINT 用于 posts数据库.
- 他正在调度“UPDATE_USER_SUCCESS”来更新 redux 存储中的用户对象,即使没有调用更新用户 API。
正确的做法是
- 调用点赞Post请求
- 使用来自 Like Post 请求
的负载更新 post 存储
- 对用户数据库执行“GET”请求
- 使用来自“GET”请求的负载更新用户存储
根据你的问题,基本上需要做的是当用户喜欢post时,首先应该更新Post数据库,只有在它成功响应后,你才必须更新用户的数据库。
因此,您提到的方法似乎是应该遵循的正确方法。
是的,我同意你的方法,是的,他的方法很老套。
IMO,如果 POST 失败,他会继续派遣到商店。这将导致错误的数据。
或者如果后端 api return 201 状态代码但有错误,例如用户未在后端更新但在前端您假设用户已更新。因此,它会导致前端数据错误。
我有一个社交媒体网站,用户可以在其中 like/dislike posts。我有一个用于用户和 post 的减速器。我的小组伙伴实现了 like/dislike 功能,如下所示:每当用户喜欢 post 时,客户端调用我的 API 和 ENDPOINT 'posts/:id/like',这将增加Post 数据库 中的 post 并将 post 添加到 User 中用户喜欢的 posts 数组数据库。 API 将 return 包含更新的用户和 post 的响应,这将导致以下操作。
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
}
这种方法行得通,但我觉得他的方法在这方面显得老套
- API 请求也 return 将更新的用户与更新的 post 一起发送,即使 ENDPOINT 用于 posts数据库.
- 他正在调度“UPDATE_USER_SUCCESS”来更新 redux 存储中的用户对象,即使没有调用更新用户 API。
正确的做法是
- 调用点赞Post请求
- 使用来自 Like Post 请求 的负载更新 post 存储
- 对用户数据库执行“GET”请求
- 使用来自“GET”请求的负载更新用户存储
根据你的问题,基本上需要做的是当用户喜欢post时,首先应该更新Post数据库,只有在它成功响应后,你才必须更新用户的数据库。 因此,您提到的方法似乎是应该遵循的正确方法。
是的,我同意你的方法,是的,他的方法很老套。
IMO,如果 POST 失败,他会继续派遣到商店。这将导致错误的数据。
或者如果后端 api return 201 状态代码但有错误,例如用户未在后端更新但在前端您假设用户已更新。因此,它会导致前端数据错误。