fix(runtime-core): fix directive merging on component root

fix #2298
This commit is contained in:
Evan You 2020-10-07 22:02:32 -04:00
parent f06518a8c9
commit 4d1ebb5deb
2 changed files with 28 additions and 1 deletions

View File

@ -340,4 +340,31 @@ describe('directives', () => {
expect(beforeUnmount).toHaveBeenCalledTimes(1) expect(beforeUnmount).toHaveBeenCalledTimes(1)
expect(unmounted).toHaveBeenCalledTimes(1) expect(unmounted).toHaveBeenCalledTimes(1)
}) })
// #2298
it('directive merging on component root', () => {
const d1 = {
mounted: jest.fn()
}
const d2 = {
mounted: jest.fn()
}
const Comp = {
render() {
return withDirectives(h('div'), [[d2]])
}
}
const App = {
name: 'App',
render() {
return h('div', [withDirectives(h(Comp), [[d1]])])
}
}
const root = nodeOps.createElement('div')
render(h(App), root)
expect(d1.mounted).toHaveBeenCalled()
expect(d2.mounted).toHaveBeenCalled()
})
}) })

View File

@ -186,7 +186,7 @@ export function renderComponentRoot(
`The directives will not function as intended.` `The directives will not function as intended.`
) )
} }
root.dirs = vnode.dirs root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs
} }
// inherit transition data // inherit transition data
if (vnode.transition) { if (vnode.transition) {