我有一個社交媒體網站,用戶可以在其中喜歡/不喜歡帖子。我有一個用于用戶和帖子的減速器。我的隊友實作了喜歡/不喜歡功能如下:每當用戶喜歡一個帖子時,客戶端使用 ENDPOINT 'posts/:id/like' 呼叫我的 API,這將增加帖子資料庫中帖子的喜歡計數并添加發布到用戶資料庫中用戶喜歡的帖子陣列。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 用于帖子資料庫,API 請求也會在更新的帖子旁邊回傳更新的用戶。
- 他正在調度“UPDATE_USER_SUCCESS”來更新 redux 存盤中的用戶物件,即使沒有呼叫更新用戶 API。
正確的做法是
- 呼叫 Like Post 請求
- 使用來自 Like Post 請求的負載更新 post store
- 對用戶資料庫執行“GET”請求
- 使用來自“GET”請求的有效負載更新用戶存盤
uj5u.com熱心網友回復:
根據你的問題,需要做的基本上是當用戶喜歡一個帖子時,首先應該更新帖子資料庫,只有在它成功回應后,你才必須更新用戶資料庫。因此,您提到的方法似乎是要遵循的正確方法。
uj5u.com熱心網友回復:
是的,我同意你的方法,是的,他的方法很黑。
IMO,如果 POST 失敗,他會繼續發送到商店。這將導致錯誤的資料。或者,如果后端 api 回傳 201 狀態代碼但有錯誤,例如用戶未在后端更新但在前端您假設用戶已更新。因此它會在前端導致錯誤的資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/360718.html
標籤:javascript 还原 反应还原 redux-store
上一篇:如何處理application.properties檔案中的Docker-Secrets
下一篇:操作陣列時出現錯誤
