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页面的数据加载逻辑

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页面的数据加载逻辑


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 list页面的数据加载逻辑



上一篇:[重要!] SAP Spartacus加载网络请求的entity状态切换,统一在loader.reducer.ts里完成


下一篇:Quick BI助力来电科技提升精细化运营能力