Home / Function/ mergeVNodeHook() — vue Function Reference

mergeVNodeHook() — vue Function Reference

Architecture documentation for the mergeVNodeHook() function in merge-hook.ts from the vue codebase.

Entity Profile

Dependency Diagram

graph TD
  38d5358a_5801_0a5e_38cd_cefe2ffa0cfb["mergeVNodeHook()"]
  5670215c_12e8_f1ac_96f5_43fa02f28d30["remove()"]
  38d5358a_5801_0a5e_38cd_cefe2ffa0cfb -->|calls| 5670215c_12e8_f1ac_96f5_43fa02f28d30
  a1f5b8ca_b6d5_6b24_155e_038685c97c85["isUndef()"]
  38d5358a_5801_0a5e_38cd_cefe2ffa0cfb -->|calls| a1f5b8ca_b6d5_6b24_155e_038685c97c85
  fe6b8b90_7070_0e25_6bde_83bb08e4398c["createFnInvoker()"]
  38d5358a_5801_0a5e_38cd_cefe2ffa0cfb -->|calls| fe6b8b90_7070_0e25_6bde_83bb08e4398c
  2be3818d_a4f3_495c_543c_ee071b428982["isDef()"]
  38d5358a_5801_0a5e_38cd_cefe2ffa0cfb -->|calls| 2be3818d_a4f3_495c_543c_ee071b428982
  7b3aa424_9089_4803_a4c7_86c4f80ba973["isTrue()"]
  38d5358a_5801_0a5e_38cd_cefe2ffa0cfb -->|calls| 7b3aa424_9089_4803_a4c7_86c4f80ba973
  style 38d5358a_5801_0a5e_38cd_cefe2ffa0cfb 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

Frequently Asked Questions

What does mergeVNodeHook() do?
mergeVNodeHook() is a function in the vue codebase.
What does mergeVNodeHook() call?
mergeVNodeHook() calls 5 function(s): createFnInvoker, isDef, isTrue, isUndef, remove.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free