日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用 selector 从 SAP Spartacus state 里读取 Cart 数据

發(fā)布時間:2023/12/19 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 selector 从 SAP Spartacus state 里读取 Cart 数据 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

選擇器 selector 是用于獲取存儲狀態(tài) state 切片的純函數(shù)。

@ngrx/store 提供了一些幫助函數(shù)來優(yōu)化這個選擇。 選擇器在選擇狀態(tài)切片時提供了許多功能。

使用 createSelector 和 createFeatureSelector 函數(shù)時,@ngrx/store 會跟蹤調(diào)用選擇器函數(shù)的最新參數(shù),在 ngrx-store.js 里完成。

因為選擇器是純函數(shù),當參數(shù)匹配時可以返回最后一個結果,而無需重新調(diào)用選擇器函數(shù)。這可以提供性能優(yōu)勢,特別是對于執(zhí)行昂貴計算的選擇器。這種做法被稱為 memoization.

最佳實踐:

設計一個 featureState 包含了具體的應用邏輯。使用 createSelector 工具函數(shù)創(chuàng)建 selector.

Spartacus 里有類似設計:

看個例子:

export class AppModule { constructor(private config: DebugConfig,private actions$: Actions,private cartService: ActiveCartService,private store: Store<StateWithMultiCart>){// console.log('Jerry config: ', this.config);/*const action = this.actions$.pipe(ofType(CartActions.LOAD_CART),map((action: CartActions.LoadCart) => action.payload),tap((data) => console.log('Jerry cart: ' , data)));action.subscribe();const action2 = this.actions$.pipe(ofType(CartActions.LOAD_CART_SUCCESS),map((action: CartActions.LoadCartSuccess) => action.payload),tap((data) => console.log('Jerry cart SUCCESS: ' , data)));action2.subscribe();*/const action3 = this.actions$.pipe(ofType(CartActions.LOAD_CART_SUCCESS),map((action: CartActions.LoadCartsSuccess) => action.payload),tap((data) => {console.log('Jerry cart SUCCESS: ' , data);this.store.pipe(select(MultiCartSelectors.getMultiCartEntities)).subscribe((value) => {console.log('Jerry result from selector: ', value);});}));action3.subscribe();/*const loading$ = this.cartService.getLoading();loading$.subscribe((data) => console.log('Jerry cart loading? ', data));*/} }

運行時:

第一層:entities
第二層:000001
第三層:error,loading,success,processesCount 和 value.

這個 state 的結構是在哪里定義的呢?

在 feature 的 store 文件夾下。

ProcessesLoaderState 提供了 processesCount 字段,它本身又是 LoaderState 類型:

因此也具有了 loading, error, success 和 value 四個字段:

EntityState 接口,本身又提供了第一層的 entities 結構和第二層的 id 結構。

在我寫下面這段高亮代碼的上下文里,Cart 肯定已經(jīng)可用了,因為它是在 LOAD_CART_SUCCESS 的回調(diào)里執(zhí)行的。

單步調(diào)試:

先執(zhí)行distinguished,再執(zhí)行 map:

value 包含了所有的 state 數(shù)據(jù):

直接從內(nèi)存里返回上一次的 result:

強行在調(diào)試器里把值改了。

被迫重新執(zhí)行 projectionFn:

注意,這個強行改值需要進行兩次。

首先獲得 feature state:

再從 state 里將 carts 數(shù)據(jù)提取出來:

大功告成:

更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:

總結

以上是生活随笔為你收集整理的使用 selector 从 SAP Spartacus state 里读取 Cart 数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色一区二区三区 | 国产又粗又黄又爽又硬 | 羞辱狗奴的句子有哪些 | jizz久久| 中文字幕人妻熟女人妻a片 麻豆91视频 | 精品美女在线观看 | 欧美大尺度做爰啪啪床戏明星 | www.com色| 亚洲一区二区三区四区 | 日日操网站 | 免费成人av在线播放 | av在线免费播放网站 | 日本午夜啪啪 | 四虎成人永久免费视频 | 青青青青青操 | 日韩欧美视频一区二区 | 玖玖玖在线观看 | 亚洲国产精品综合久久久 | av大全网站 | 99re这里只有精品66 | 成人无码视频 | 成人免费做受小说 | 尤物videos另类xxxx | 91精品人妻一区二区三区果冻 | 79日本xxxxxxxxx18| 99精品国产成人一区二区 | 成人黄色在线网站 | 黄色性网站 | 欧美色一区二区三区在线观看 | 91蜜桃视频在线观看 | 国产又黄又粗又长 | 成年人在线视频观看 | 欧美videos另类极品 | 国产大学生自拍视频 | av一级免费| 欧美大片免费观看 | 污污在线看 | 黄色网址国产 | 久久人妻无码aⅴ毛片a片app | 欧美成人乱码一二三四区免费 | 亚洲一区二区三区三州 | 亚州av| 国产乱真实合集 | 在线高清免费观看 | 久久青草热 | 国产一区二区免费视频 | www.chengren | 99精品人妻少妇一区二区 | 看一级片 | 特大黑人巨交吊性xxxx视频 | av毛片一区| 亚洲人妖在线 | 男人操女人下面视频 | 精品国产一区二区在线 | 天堂在线视频免费 | 春宵av| 国产精品一区二区三区不卡 | 九九热视频免费 | 国产小视频在线免费观看 | a亚洲精品 | 我们俩电影网mp4动漫官网 | 日韩三级中文 | 天堂а√在线中文在线 | 伊人啪啪网 | 少妇人妻一区二区 | jizzjizz免费| 99视频热| 四虎一国产精品一区二区影院 | 国产欧美一区二区三区鸳鸯浴 | 五月六月丁香 | 午夜成人免费视频 | 亚洲欧洲av | 亚洲国产无码久久 | 中文字幕在线一区二区三区 | 欧美亚洲在线播放 | 69xx国产 | 久久与婷婷 | 香蕉人妻av久久久久天天 | 青青草狠狠操 | 亚洲欧洲日本一区二区三区 | 欧美激情视频一区二区 | 中国性老太hd大全69 | 亚洲乱码精品久久久久.. | 国产精品欧美激情在线 | 欧美一级做性受免费大片免费 | www.香蕉视频在线观看 | 日韩av三级在线 | 亚洲欧美一二三区 | 高潮毛片无遮挡免费看 | 中国美女黄色一级片 | 国产精品自产拍在线观看 | 极品粉嫩小仙女高潮喷水久久 | 在线观看国产免费av | 色多多黄色 | 丁香激情网 | 国产精品成人3p一区二区三区 | 黄色免费一级 | av高清在线| 不卡影院一区二区 |