![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/vreg/node_modules/vue/src/core/vdom/helpers/ |
/* @flow */ import VNode from '../vnode' import { createFnInvoker } from './update-listeners' import { remove, isDef, isUndef, isTrue } from 'shared/util' export function mergeVNodeHook (def: Object, 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 }