簡體   English   中英

ngrx - 成功操作后在哪里發出 web 請求更新存儲

[英]ngrx - where to make web requests to update store after successful action

我目前正在使用ngrx 和nrg-entity。 如果響應不包含必須存儲的實體 object ,我想知道在成功的 web 請求后更新商店的最佳做法是什么。

例子:

// My state
export interface State extends EntityState<Book> {}

我提出了 web 請求來創建一本書。 從后端我只能得到創建書的 id。 默認情況下,您創建一個 reducer 將新創建的書放在您的商店中,如下所示:

createReducer(
  initialState,
on(BookActions.createBookSuccess, (state, { book}) =>
    bookAdapter.addOne(book, { ...state, creating: false })
  ));

我看到有兩個選項可以將新書還給減速器:

  1. 在 dataservice createBook() 方法中,當您獲得新書的 id 並返回書 object 時,您進行第二次調用“GetBookById()”。
  2. 在 createBookSuccess 效果中,您觸發數據服務調用“GetBookById()”並返回結果(給減速器)。

這些選項之一是移動的方式嗎? 或者,還有更好的方法?

我希望我能夠把我的問題說清楚。

有很多方法可以做到這一點,但我的直覺是讓效果觸發另一個獲取和設置下一個值的動作/效果。 所以你的第一個效果返回這樣的東西,

return [
  ...,  //Whatever it already returns
  LoadBookByIdEffect
]

然后您的 LoadBookIdEffect 會觸發一個 Action 來設置 state 中的賬面價值,

return SetBook({ book });

這是對像這樣將效果鏈接在一起的語法的更詳細說明,

@ngrx 中效果中的鏈式操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM