mergeVNodeHook() — vue Function Reference
Architecture documentation for the mergeVNodeHook() function in merge-hook.ts from the vue codebase.
Entity Profile
Dependency Diagram
graph TD 7a06e596_c3cd_223f_3edc_18572e0bd1f4["mergeVNodeHook()"] 2fe22abf_9073_15d3_f856_f421b0fe047a["merge-hook.ts"] 7a06e596_c3cd_223f_3edc_18572e0bd1f4 -->|defined in| 2fe22abf_9073_15d3_f856_f421b0fe047a d9d418b5_5caf_d879_89fa_46602272fa33["createFnInvoker()"] 7a06e596_c3cd_223f_3edc_18572e0bd1f4 -->|calls| d9d418b5_5caf_d879_89fa_46602272fa33 style 7a06e596_c3cd_223f_3edc_18572e0bd1f4 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
src/core/vdom/helpers/merge-hook.ts lines 5–40
export function mergeVNodeHook(
def: Record<string, any>,
hookKey: string,
hook: Function
) {
if (def instanceof VNode) {
def = def.data!.hook || (def.data!.hook = {})
}
let invoker
const oldHook = def[hookKey]
function wrappedHook() {
hook.apply(this, arguments)
// important: remove merged hook to ensure it's called only once
// and prevent memory leak
remove(invoker.fns, wrappedHook)
}
if (isUndef(oldHook)) {
// no existing hook
invoker = createFnInvoker([wrappedHook])
} else {
/* istanbul ignore if */
if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {
// already a merged invoker
invoker = oldHook
invoker.fns.push(wrappedHook)
} else {
// existing plain hook
invoker = createFnInvoker([oldHook, wrappedHook])
}
}
invoker.merged = true
def[hookKey] = invoker
}
Domain
Subdomains
Defined In
Calls
Source
Frequently Asked Questions
What does mergeVNodeHook() do?
mergeVNodeHook() is a function in the vue codebase, defined in src/core/vdom/helpers/merge-hook.ts.
Where is mergeVNodeHook() defined?
mergeVNodeHook() is defined in src/core/vdom/helpers/merge-hook.ts at line 5.
What does mergeVNodeHook() call?
mergeVNodeHook() calls 1 function(s): createFnInvoker.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free