关于 SAP Spartacus Loader Meta Reducer 的用途 - loading 在 true 和 false之前切换的逻辑
為了給用戶更好的反饋,基于他們的行為,我們經常需要保留諸如“正在加載購物車”、“獲取用戶地址失敗”等信息。 對于每個單獨的應用程序狀態,我們必須將元數據放在旁邊。 分別用于購物車、用戶信息、產品數據等。 在所有這些地方手動實現這個邏輯會導致在整個代碼庫中針對同一問題有不同的解決方案。 這就是在 spartacus 中創建 loaderReducer 的原因。 這個reducer 標準化了整個狀態樹(state tree)中的元數據處理。 您可以在樹的任何深度、任何需要的地方使用它。 除了reducer,我們還提供 actions 和 selectors 的實用程序。
一個例子:
在 app.module.ts 里插入如下代碼:
export class AppModule { constructor(private config: DebugConfig,private actions$: Actions){// console.log('Jerry config: ', this.config);this.actions$.pipe(ofType(CartActions.LOAD_CART),map((action: CartActions.LoadCart) => action.payload),tap((data) => console.log('Jerry cart: ' , data))).subscribe();}}運行時效果:
 
Error 是經常放置在 NgRx Store 中的 AJAX 調用狀態之一。 其他狀態包括 Loading,Loaded 和 Success 等等。
interface ResultState {result: Result,error: string|null,isLoading: boolean,isLoaded: boolean, }為什么將這些狀態放入 Store? 嗯,這通常是由用戶體驗決策驅動的。例如,用戶應該能夠在等待調用完成時看到某種進度指示器,或者如果調用結果出錯時,能看到錯誤消息。
SAP Spartacus 采用了統一的工具 reducer,名為 loaderReducer,來為 entity 加載添加不同的標志位:
Higher order reducer that adds generic loading flag to chunk of the state. It utilizes “loader” meta field of actions to set specific flags for specific action (LOAD, SUCCESS, FAIL, RESET)
將通用加載標志添加到狀態塊的高階 reducer. 它利用“加載程序”元操作字段來設置特定操作的特定標志(加載、成功、失敗、重置)
 
一旦某個 entity 加載成功之后,首先觸發高階 reducer:
注意這行語句:
return Object.assign(Object.assign({}, state), { value: reducer ? reducer(state.value, action) : action.payload, loading: false, error: false, success: true });顯式將 state 里的 loading 字段硬編碼為 false.這樣無需應用程序手動修改 loading 標志位了。
更多Jerry的原創文章,盡在:“汪子熙”:
 
總結
以上是生活随笔為你收集整理的关于 SAP Spartacus Loader Meta Reducer 的用途 - loading 在 true 和 false之前切换的逻辑的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 华为klw一tl00是什么型号
- 下一篇: 明日之后复合弓用什么箭
