Skip to content
Permalink
Browse files
fix(runtime-core): ensure custom events are not emitted anymore after…
… unmount. (#5679)

close #5674
  • Loading branch information
LinusBorg committed Apr 14, 2022
1 parent 8e29ef6 commit 71c953662528c4f0be68e7b412585c6809794528
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
@@ -6,7 +6,8 @@ import {
defineComponent,
h,
nodeOps,
toHandlers
toHandlers,
nextTick
} from '@vue/runtime-test'
import { isEmitListener } from '../src/componentEmits'

@@ -374,4 +375,29 @@ describe('component: emit', () => {
// PascalCase option
expect(isEmitListener(options, 'onFooBaz')).toBe(true)
})

test('does not emit after unmount', async () => {
const fn = jest.fn()
const Foo = defineComponent({
emits: ['closing'],
async beforeUnmount() {
await this.$nextTick()
this.$emit('closing', true)
},
render() {
return h('div')
}
})
const Comp = () =>
h(Foo, {
onClosing: fn
})

const el = nodeOps.createElement('div')
render(h(Comp), el)
await nextTick()
render(null, el)
await nextTick()
expect(fn).not.toHaveBeenCalled()
})
})
@@ -73,6 +73,7 @@ export function emit(
event: string,
...rawArgs: any[]
) {
if (instance.isUnmounted) return
const props = instance.vnode.props || EMPTY_OBJ

if (__DEV__) {

0 comments on commit 71c9536

Please sign in to comment.