Skip to content

Commit

Permalink
fix: directives shorthand normalize error (#12744)
Browse files Browse the repository at this point in the history
fix #12743
  • Loading branch information
JuniorTour committed Aug 18, 2022
1 parent 5221d4d commit 2263948
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/core/vdom/modules/directives.ts
Expand Up @@ -103,7 +103,15 @@ function normalizeDirectives(
}
res[getRawDirName(dir)] = dir
if (vm._setupState && vm._setupState.__sfc) {
dir.def = dir.def || resolveAsset(vm, '_setupState', 'v-' + dir.name)
const setupDef = dir.def || resolveAsset(vm, '_setupState', 'v-' + dir.name)
if (typeof setupDef === 'function') {
dir.def = {
bind: setupDef,
update: setupDef,
}
} else {
dir.def = setupDef
}
}
dir.def = dir.def || resolveAsset(vm.$options, 'directives', dir.name, true)
}
Expand Down
13 changes: 13 additions & 0 deletions test/unit/features/v3/apiSetup.spec.ts
Expand Up @@ -251,6 +251,19 @@ describe('api: setup context', () => {
expect(spy).toHaveBeenCalled()
})

// #12743
it('directive resolution for shorthand', () => {
const spy = vi.fn()
new Vue({
setup: () => ({
__sfc: true,
vDir: spy
}),
template: `<div v-dir />`
}).$mount()
expect(spy).toHaveBeenCalled()
})

// #12561
it('setup props should be reactive', () => {
const msg = ref('hi')
Expand Down

0 comments on commit 2263948

Please sign in to comment.