FormKit Observer 是一个实用工具,用于将 FormKitNode 包装在一个依赖跟踪的观察者代理中。
创建观察者。
createObserver(node: FormKitNode, dependencies?: FormKitDependencies): FormKitObservedNode;
node
— 要观察的 FormKitNode。dependencies
可选 — 依赖节点和需要监听更改的事件。返回一个 FormKitObservedNode。
确定应添加哪些节点作为依赖项,哪些节点应该被移除。
diffDeps(previous: FormKitDependencies, current: FormKitDependencies): [FormKitDependencies, FormKitDependencies];
previous
— 先前的观察者依赖项。current
— 新的/当前的观察者依赖项。一个包含 toAdd
和 toRemove
的元组。
检查给定的节点是否被撤销。
isKilled(node: FormKitObservedNode): boolean;
node
— 要检查的任何观察节点。一个 boolean
值,指示节点是否被撤销。
从观察节点和子树中删除所有收据。
removeListeners(receipts: FormKitObserverReceipts): void;
receipts
— 要删除的 FormKit 观察者收据。一个与 API 兼容的 FormKitNode,能够确定节点及其值的完整依赖树。
interface FormKitObservedNode extends FormKitNode {
_node: FormKitNode;
deps: FormKitDependencies;
kill: () => undefined;
observe: () => void;
receipts: FormKitObserverReceipts;
stopObserve: () => FormKitDependencies;
watch:<TextendsFormKitWatchable>(block: T, after?: (value: ReturnType<T>) => void) => void;
}
用于观察节点的回调函数。
interface FormKitWatchable<T = unknown> {
(node: FormKitObservedNode): T;
}
依赖节点和需要监听更改的事件。
type FormKitDependencies = Map<FormKitNode, Set<string>> & {
active?: boolean;
};
节点的 Map,其值为事件名称: 收据
type FormKitObserverReceipts = Map<FormKitNode, {
[index: string]: string;
}>;