SAP Spartacus B2B User list页面的数据加载逻辑

list.service.ts的getData方法里的this.load触发时,this实际指向UserListService:


SAP Spartacus B2B User list页面的数据加载逻辑


触发点还是list页面的async pipe:


SAP Spartacus B2B User list页面的数据加载逻辑


ListService在运行时的实例化成UserListService,在userCmsConfig里完成:


SAP Spartacus B2B User list页面的数据加载逻辑


getUserList:调用this.store.select:


SAP Spartacus B2B User list页面的数据加载逻辑


getUserList的实现:


SAP Spartacus B2B User list页面的数据加载逻辑


这里才执行createSelector?


SAP Spartacus B2B User list页面的数据加载逻辑


createSelector的返回结果:


SAP Spartacus B2B User list页面的数据加载逻辑


返回一个Observable对象:


SAP Spartacus B2B User list页面的数据加载逻辑


select的输入参数:输入一个函数,该函数的类型定义:


接受一个输入参数,类型为T,输出参数为K,整个select调用返回的类型为:Observable:


SAP Spartacus B2B User list页面的数据加载逻辑


问题来了:this.store.select输入的,到底是selector,还是纯函数projection?


从接口看,是一个selector:

SAP Spartacus B2B User list页面的数据加载逻辑


这里开始加载list:


SAP Spartacus B2B User list页面的数据加载逻辑


先take,再map:

SAP Spartacus B2B User list页面的数据加载逻辑


注意,这里返回的是string,而不是Observable:


SAP Spartacus B2B User list页面的数据加载逻辑

准备加载B2BUsers,参数为userId和params:


SAP Spartacus B2B User list页面的数据加载逻辑


SAP Spartacus B2B User list页面的数据加载逻辑


SAP Spartacus B2B User list页面的数据加载逻辑


SAP Spartacus B2B User list页面的数据加载逻辑



这个return语句会触发reducer的状态迁移:


SAP Spartacus B2B User list页面的数据加载逻辑


这个payload里怎么只有一条数据?


SAP Spartacus B2B User list页面的数据加载逻辑


似乎是在一个循环里被反复触发:

SAP Spartacus B2B User list页面的数据加载逻辑


确实是在循环里:高阶reducer

SAP Spartacus B2B User list页面的数据加载逻辑

SAP Spartacus B2B User list页面的数据加载逻辑





上一篇:SAP Spartacus B2B user列表对应的Angular Component


下一篇:SAP Spartacus 和Jerry Sandbox应用Store引用的source字段类型差异