Skip to content

useEventListener 事件绑定(vue3)

  • 方便地进行事件绑定,在组件 mounted 和 activated 时绑定事件,
  • unmounted 和 deactivated 时解绑事件。

基础使用

ts
import { ref } from 'vue'
import { useEventListener } from '@mid-vue/shared'

export default {
  setup() {
    // 在 window 上绑定 resize 事件
    // 未指定监听对象时,默认会监听 window 的事件
    useEventListener('resize', () => {
      console.log('window resize')
    })

    // 在 body 元素上绑定 click 事件
    useEventListener(
      'click',
      () => {
        console.log('click body')
      },
      { target: document.body }
    )
  },
}

支持 vue3 的 Ref

ts
import { ref } from 'vue'
let divRef = ref<HTMLElement>()
useEventListener(
  'scroll',
  () => {
    console.log('window resize')
  },
  {
    target: divRef,
  }
)

取消事件监听

useEventListener 会返回一个 cleanup 函数,调用该函数可以取消事件监听。

ts
import { ref } from 'vue'
import { useEventListener } from '@vant/use'

export default {
  setup() {
    const cleanup = useEventListener('resize', () => {
      console.log('window resize')
    })

    cleanup()
  },
}

Options

名字描述类型Default
target绑定事件的元素Window , Document , HTMLElement , Ref window
capture是否在事件捕获阶段触发booleanfalse
passive设置为 true 时,表示 listener 永远不会调用 preventDefaultbooleanfalse

Released under the MIT License.