Skip to content

Adapter 与 Context ​

Vue 和 React 组件通过 makoo prop 接收当前任务的 Context。自定义 Adapter 时,从 @makoojs/core 导入下面的挂载协议类型。

Adapter 类型 ​

MountAdapter ​

ts
interface MountAdapter<TArtifact = unknown, THandle = unknown, TInstance = unknown> {
	name: string;
	mount(input: AdapterMountInput<TArtifact>): AdapterMountResult<THandle, TInstance>;
	unmount(input: AdapterUnmountInput<THandle>): void;
}

ResolvableMountAdapter ​

ts
interface ResolvableMountAdapter<TArtifact = unknown, THandle = unknown, TInstance = unknown>
	extends MountAdapter<TArtifact, THandle, TInstance> {
	matches(artifact: unknown): artifact is TArtifact;
}

AdapterMountInput ​

字段类型
hostHTMLElement
mountPointHTMLElement
artifactTArtifact
taskIdstring
injectAtstring
makooMakooContext

host 是页面中匹配 injectAt 的元素,mountPoint 是 Makoo 在其中创建的挂载容器。Adapter 将 artifact 挂载到 mountPoint。

AdapterMountResult ​

ts
type AdapterMountResult<THandle = unknown, TInstance = unknown> = {
	handle: THandle;
	instance?: TInstance;
};

AdapterUnmountInput ​

字段类型
host?HTMLElement
mountPointHTMLElement
handleTHandle
taskIdstring
injectAtstring
reasonAdapterUnmountReason
ts
type AdapterUnmountReason = 'destroy' | 'reset' | 'remount' | 'manual';
type AdapterResolver = (artifact: unknown) => MountAdapter | undefined;

卸载时使用挂载阶段返回的 handle 释放框架实例。reason 表示此次卸载的原因。

MakooContext ​

ts
type MakooContext = {
	taskId: string;
	injectAt: string;
	enableAlive(): void;
	disableAlive(): void;
	reset(): void;
	destroy(): void;
	on(event: ObserveEventName, hook: ObserveHook): () => void;
	onTask(event: ObserveEventName, hook: ObserveHook): () => void;
	off(event: ObserveEventName, hook?: ObserveHook): void;
	offTask(event?: ObserveEventName, hook?: ObserveHook): void;
	getLogger(): ILogger;
	bindListenerSignal(source: ActivitySignalSource<boolean>): boolean;
	controlListener(event: ActionEvent): boolean;
};

taskId 和 injectAt 标识当前组件任务。destroy() 卸载并移除任务,reset() 释放资源并保留任务记录。

on() 订阅 Runtime 中指定名称的事件,onTask() 只订阅当前任务的事件;两者都返回取消订阅函数。controlListener() 和 bindListenerSignal() 用于控制通过 options.on 随组件注册的监听器。