feat(compiler-core): support aliasing vue: prefixed events to inline vnode hooks

This commit is contained in:
Evan You
2021-12-10 16:09:23 +08:00
parent 1c9a4810fc
commit 4b0ca8709a
5 changed files with 36 additions and 23 deletions

View File

@@ -1209,12 +1209,7 @@ describe('compiler: element transform', () => {
test('force block for inline before-update handlers w/ children', () => {
expect(
parseWithElementTransform(`<div @vnode-before-update>hello</div>`).node
.isBlock
).toBe(true)
expect(
parseWithElementTransform(`<div @vnodeBeforeUpdate>hello</div>`).node
parseWithElementTransform(`<div @vue:before-update>hello</div>`).node
.isBlock
).toBe(true)
})

View File

@@ -438,6 +438,32 @@ describe('compiler: transform v-on', () => {
})
})
test('vue: prefixed events', () => {
const { node } = parseWithVOn(
`<div v-on:vue:mounted="onMount" @vue:before-update="onBeforeUpdate" />`
)
expect((node.codegenNode as VNodeCall).props).toMatchObject({
properties: [
{
key: {
content: `onVnodeMounted`
},
value: {
content: `onMount`
}
},
{
key: {
content: `onVnodeBeforeUpdate`
},
value: {
content: `onBeforeUpdate`
}
}
]
})
})
describe('cacheHandler', () => {
test('empty handler', () => {
const { root, node } = parseWithVOn(`<div v-on:click.prevent />`, {