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

选择器 selector 是用于获取存储状态 state 切片的纯函数。


@ngrx/store 提供了一些帮助函数来优化这个选择。 选择器在选择状态切片时提供了许多功能。


使用 createSelector 和 createFeatureSelector 函数时,@ngrx/store 会跟踪调用选择器函数的最新参数,在 ngrx-store.js 里完成。


因为选择器是纯函数,当参数匹配时可以返回最后一个结果,而无需重新调用选择器函数。这可以提供性能优势,特别是对于执行昂贵计算的选择器。这种做法被称为 memoization.


最佳实践:


设计一个 featureState 包含了具体的应用逻辑。使用 createSelector 工具函数创建 selector.


使用 selector 从 SAP Spartacus state 里读取 Cart 数据Spartacus 里有类似设计:使用 selector 从 SAP Spartacus state 里读取 Cart 数据看个例子:使用 selector 从 SAP Spartacus state 里读取 Cart 数据运行时:使用 selector 从 SAP Spartacus state 里读取 Cart 数据第一层:entities

第二层:000001

第三层:error,loading,success,processesCount 和 value.

这个 state 的结构是在哪里定义的呢?

使用 selector 从 SAP Spartacus state 里读取 Cart 数据在 feature 的 store 文件夹下。使用 selector 从 SAP Spartacus state 里读取 Cart 数据使用 selector 从 SAP Spartacus state 里读取 Cart 数据ProcessesLoaderState 提供了 processesCount 字段,它本身又是 LoaderState 类型:使用 selector 从 SAP Spartacus state 里读取 Cart 数据因此也具有了 loading, error, success 和 value 四个字段:使用 selector 从 SAP Spartacus state 里读取 Cart 数据EntityState 接口,本身又提供了第一层的 entities 结构和第二层的 id 结构。使用 selector 从 SAP Spartacus state 里读取 Cart 数据在我写下面这段高亮代码的上下文里,Cart 肯定已经可用了,因为它是在 LOAD_CART_SUCCESS 的回调里执行的。使用 selector 从 SAP Spartacus state 里读取 Cart 数据单步调试:

先执行distinguished,再执行 map:

使用 selector 从 SAP Spartacus state 里读取 Cart 数据使用 selector 从 SAP Spartacus state 里读取 Cart 数据使用 selector 从 SAP Spartacus state 里读取 Cart 数据value 包含了所有的 state 数据:使用 selector 从 SAP Spartacus state 里读取 Cart 数据直接从内存里返回上一次的 result:使用 selector 从 SAP Spartacus state 里读取 Cart 数据强行在调试器里把值改了。使用 selector 从 SAP Spartacus state 里读取 Cart 数据*重新执行 projectionFn:

使用 selector 从 SAP Spartacus state 里读取 Cart 数据注意,这个强行改值需要进行两次。

首先获得 feature state:使用 selector 从 SAP Spartacus state 里读取 Cart 数据使用 selector 从 SAP Spartacus state 里读取 Cart 数据使用 selector 从 SAP Spartacus state 里读取 Cart 数据再从 state 里将 carts 数据提取出来:使用 selector 从 SAP Spartacus state 里读取 Cart 数据大功告成:使用 selector 从 SAP Spartacus state 里读取 Cart 数据

上一篇:阿里云自然语言处理PHP Core SDK使用Quick Start


下一篇:直击案发现场!TCP 10倍延迟的真相是?