Skip to content

Commit 53b77f8

Browse files
committed
refactor: simplify mergeVNodeHook usage
1 parent 664cee6 commit 53b77f8

File tree

4 files changed

+8
-4
lines changed

4 files changed

+8
-4
lines changed

src/core/vdom/helpers/merge-hook.js

+4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
/* @flow */
22

3+
import VNode from '../vnode'
34
import { createFnInvoker } from './update-listeners'
45
import { remove, isDef, isUndef, isTrue } from 'shared/util'
56

67
export function mergeVNodeHook (def: Object, hookKey: string, hook: Function) {
8+
if (def instanceof VNode) {
9+
def = def.data.hook || (def.data.hook = {})
10+
}
711
let invoker
812
const oldHook = def[hookKey]
913

src/core/vdom/modules/directives.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,14 @@ function _update (oldVnode, vnode) {
5454
}
5555
}
5656
if (isCreate) {
57-
mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', callInsert)
57+
mergeVNodeHook(vnode, 'insert', callInsert)
5858
} else {
5959
callInsert()
6060
}
6161
}
6262

6363
if (dirsWithPostpatch.length) {
64-
mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'postpatch', () => {
64+
mergeVNodeHook(vnode, 'postpatch', () => {
6565
for (let i = 0; i < dirsWithPostpatch.length; i++) {
6666
callHook(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode)
6767
}

src/platforms/web/runtime/directives/model.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const directive = {
2424
if (vnode.tag === 'select') {
2525
// #6903
2626
if (oldVnode.elm && !oldVnode.elm._vOptions) {
27-
mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'postpatch', () => {
27+
mergeVNodeHook(vnode, 'postpatch', () => {
2828
directive.componentUpdated(el, binding, vnode)
2929
})
3030
} else {

src/platforms/web/runtime/modules/transition.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ export function enter (vnode: VNodeWithData, toggleDisplay: ?() => void) {
130130

131131
if (!vnode.data.show) {
132132
// remove pending leave element on enter by injecting an insert hook
133-
mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', () => {
133+
mergeVNodeHook(vnode, 'insert', () => {
134134
const parent = el.parentNode
135135
const pendingNode = parent && parent._pending && parent._pending[vnode.key]
136136
if (pendingNode &&

0 commit comments

Comments
 (0)