【发布时间】: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
}
这种方法行得通,但我觉得他的方法似乎很老套
- 即使 ENDPOINT 用于 posts 数据库,API 请求也会在更新的帖子旁边返回更新的用户。
- 即使未调用更新用户 API,他仍在调度“UPDATE_USER_SUCCESS”以更新 redux 存储中的用户对象。
正确的方法是
- 调用 Like Post 请求
- 使用来自 Like Post 请求的负载更新 post 存储
- 对用户数据库执行“GET”请求
- 使用来自“GET”请求的负载更新用户存储
【问题讨论】:
标签: javascript redux react-redux redux-store