element-plus/packages/hooks/use-events/index.ts

25 lines
484 B
TypeScript
Raw Normal View History

2020-08-25 22:25:46 +08:00
import { watch } from 'vue'
import { on, off } from '@element-plus/utils/dom'
import type { Ref } from 'vue'
export type Event = {
2020-08-25 22:25:46 +08:00
name: string
handler: (...args: any[]) => any
}
2020-08-25 22:25:46 +08:00
export default (el: Ref<HTMLElement>, events: Event[]) => {
2020-08-25 22:25:46 +08:00
watch(el, val => {
if (val) {
events.map(({ name, handler }) => {
on(el.value, name, handler)
})
} else {
2020-08-25 22:25:46 +08:00
events.map(({ name, handler }) => {
off(el.value, name, handler)
})
}
2020-08-25 22:25:46 +08:00
})
}