Vue3中的hooks使用

在Vue的options Api時(shí)代,mixins是我們抽離一個(gè)功能的重要手段,而在使用composition Api的Vue3時(shí)代,我們可以用hooks來實(shí)現(xiàn)類似mixins的功能。
相比mixins,hooks更清楚復(fù)用功能代碼的來源, 更清晰易懂。
下面來了解一下hooks的用法~~

首先,在src中創(chuàng)建一個(gè)hooks文件夾,來統(tǒng)一管理項(xiàng)目中的hooks功能


hooks.png

在hooks文件夾中新建一個(gè)文件useMousePosition.ts,這個(gè)hooks實(shí)現(xiàn)的功能是點(diǎn)擊頁面時(shí),記錄鼠標(biāo)當(dāng)前的位置

// src/hooks/useMousePosition.ts
import { ref, onMounted, onUnmounted, Ref } from 'vue'

interface MousePosition {
  x: Ref<number>,
  y: Ref<number>
}
function useMousePosition(): MousePosition {
  const x = ref(0)
  const y = ref(0)

  const updateMouse = (e: MouseEvent) => {
    x.value = e.pageX
    y.value = e.pageY
  }

  onMounted(() => {
    document.addEventListener('click', updateMouse)
  })

  onUnmounted(() => {
    document.removeEventListener('click', updateMouse)
  })

  return { x, y }
}

export default useMousePosition

最后,我們在需要用到該hooks的組件中引入使用

<template>
  <div>
    <p>X: {{ x }}</p>
    <p>Y: {{ y }}</p>
  </div>
</template>

<script lang="ts">
import { defineComponent} from 'vue'
// 引入hooks
import useMousePosition from '../../hooks/useMousePosition'
export default defineComponent({
  setup () {
    // 使用hooks功能
    const { x, y } = useMousePosition()

    return {
      x,
      y
    }
  }
})
</script>

以上就是vue3中hooks的使用,是不是覺得特別的簡單清晰

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容