当前位置: 首页 > Web前端 > JavaScript

SAPCommerceCloudSpartacusUI的ActionClass数据结构设计

时间:2023-03-27 11:51:39 JavaScript

以CmsSetPageSuccessIndex为例:Action类在运行时包含三大字段:(1)meta(2)payload(3)typemetameta包含loader字段,meta本身是一个object.meta.entityId和entityType是动作负载的标识位。loader指示该实体的加载状态。payload中包含的业务数据:类型字符串类型。从上图中的Prototype可以看出,CmsSetPageSuccessIndex的原型链类是EntitySuccessAction。从它的实现代码也可以看出这一点:构造函数(pageContext:PageContext,payload:Page){super(pageContext.type,pageContext.id,payload);}}查看EntitySuccessAction的实现:属性1,meta属性,定义在这个类中。属性2,有效负载,通过构造函数参数定义。属性3,类型,在上面第81行定义,然后被CmsSetPageSuccessIndex重载。EntitySuccessAction构造函数接收三个参数:entityType、id和payload。通过entityType和id,产生元字段。entitySuccessMeta可以看作是一个构造函数或者工厂函数:根据entityType和id,生产出EntityLoaderMeta,它是EntityMeta和LoaderMeta的联合。导出接口EntityMeta{实体类型:字符串;entityId:字符串|细绳[];entityRemove?:boolean;}exportinterfaceLoaderMeta{entityType:string;装载机:{装载?:布尔值;错误?:任何;成功?:布尔值;};}采用三个点的语法是因为两个接口有相同的name字段:entityTypeLoaderMeta的运行时数据,通过构造函数loadMeta:exportfunctionloadMeta(entityType:string):LoaderMeta{return{entityType:entityType,loader:{load:true,},};}EntityMeta字段的值,由entityMeta构造:exportfunctionentityMeta(type:string,id:string|string[]):EntityMeta{return{entityType:type,entityId:id,};}运行时通过PageEffect从商务云后台成功读取CMS数据后,新建一个ActionClass,通过构造函数参数传入load。更多Jerry原创文章在这里:《王子熙》:

最新推荐
猜你喜欢