文件路径:./src/hooks.ts
这个文件主要是定义了 Virtual Dom 在实现过程中,在其执行过程中的一系列钩子。方便外部做一些处理
// 钩子
export interface Hooks {
// 在 `patch` 开始执行的时候调用
pre?: PreHook;
// 在 `createElm`,进入的时候调用 init
// vnode 转换为真实 DOM 节点时触发
init?: InitHook;
// 创建真实 DOM 的时候,调用 create
create?: CreateHook;
// 在 `patch` 方法接近完成的时候,才收集所有的插入节点,遍历调用响应的钩子
// 可以认为插入到 DOM 树时触发
insert?: InsertHook;
// 在两个节点开始对比前调用
prepatch?: PrePatchHook;
// 更新过程中,调用 update
update?: UpdateHook;
// 两个节点对比完成时候调用
postpatch?: PostPatchHook;
// 删除节点的时候调用,包括子节点的 destroy 也会被触发
destroy?: DestroyHook;
// 删除当前节点的时候调用。元素从父节点删除时触发,和 destory 略有不同,remove 只影响到被移除节点中最顶层的节点
remove?: RemoveHook;
// 在 `patch` 方法的最后调用,也就是 patch 完成后触发
post?: PostHook;
}
snabbdom 源码解析系列
snabbdom 源码解析(一)准备工作
snabbdom 源码解析(二)h 函数
snabbdom 源码解析(三)vnode 对象
snabbdom 源码解析(四)patch 方法
snabbdom 源码解析(五)钩子
snabbdom 源码解析(六)模块
snabbdom 源码解析(七)事件处理
个人博客地址