簡體   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