SuperAPI AI 工具集

umbraco-context-api

编程与开发

查看项目

更新于 10-15 21:05

技能介绍

用途:Context API 是 Umbraco 后台扩展的通信机制,让扩展在组件层级中共享数据与功能而不产生紧耦合。它采用提供者-消费者模式,父元素提供上下文,后代组件可访问;上下文沿 DOM 树向下级联,并通过令牌实现类型安全访问,例如通知、工作区、用户信息等服务。

主要能力:支持消费上下文与提供上下文。消费有两种方式:订阅模式用 consumeContext(),在上下文可用时执行回调,适合初始化阶段;一次性模式用 getContext(),适合用户交互触发的操作。提供上下文用 provideContext(),配合 UmbContextToken 定义类型安全令牌。常见内置上下文包括 UMB_NOTIFICATION_CONTEXT、UMB_CURRENT_USER_CONTEXT、UMB_MODAL_MANAGER_CONTEXT、UMB_DOCUMENT_WORKSPACE_CONTEXT、UMB_BLOCK_ENTRY_CONTEXT、UMB_PROPERTY_DATASET_CONTEXT。

使用方式:实现前应先获取最新文档,主要文档地址为 https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/foundation/context-api,消费与提供分别见其 consume-a-context 与 provide-a-context 子页面。典型流程为:获取文档、确认需要消费还是提供及目标上下文、按最新文档生成代码、说明上下文如何流动。消费订阅模式示例中,元素继承 UmbLitElement,在构造函数内调用 this.consumeContext(UMB_NOTIFICATION_CONTEXT, (context) => {...}) 保存上下文引用;一次性模式中,服务继承 UmbControllerBase,用 await this.getContext(UMB_NOTIFICATION_CONTEXT) 获取后使用。提供上下文时,用 new UmbContextToken<MyCustomContext>('MyCustomContext') 定义令牌,并在提供者元素构造函数中调用 this.provideContext(MY_CUSTOM_CONTEXT, new MyCustomContext())。

适用场景:为 Umbraco 后台开发扩展、自定义元素或服务,需要在组件树中共享服务、状态或功能时使用。

限制:上下文只沿 DOM 树向下流动,提供者无法访问后代提供的上下文;订阅与一次性模式的选择取决于是否需要初始化时获取;具体 API 细节与最新用法以官方文档为准,本资料未提供收费、平台或效果等信息。