VueUse是一个非常实用的Vue组合式API工具集合,为Vue开发者提供了大量常用的功能和hooks。它由Anthony Fu开发,支持Vue 2和Vue 3,可以大大提高Vue应用的开发效率。

VueUse的主要特点

  • 支持Vue 2和Vue 3
  • 完全可树摇,按需引入
  • 使用TypeScript编写,类型安全
  • SSR友好
  • 无需打包器,可通过CDN使用
  • 提供可选的附加功能,如路由、Firebase、RxJS等

安装和使用

通过npm安装:

npm install @vueuse/core

基本使用示例:

import { useLocalStorage, useMouse, usePreferredDark } from '@vueuse/core'

export default {
setup() {
// 跟踪鼠标位置
const { x, y } = useMouse()

// 检测用户是否偏好深色主题
const isDark = usePreferredDark()

// 在localStorage中持久化状态
const store = useLocalStorage('my-storage', {
name: 'Apple',
color: 'red',
})

return { x, y, isDark, store }
}
}

VueUse提供的主要功能

  • VueUse提供了大量实用函数,主要分为以下几类:
  • 动画 - 过渡、计时等
  • 浏览器 - 剪贴板、首选项等
  • 组件 - 组件相关方法
  • 格式化 - 时间格式化等
  • 传感器 - DOM事件、输入事件等
  • 状态 - 状态管理
  • 工具 - getter、条件等
  • 监听 - 高级watch功能
  • 网络 - 请求、WebSocket等

几个常用的VueUse函数

  1. useRefHistory
    跟踪响应式数据的变更历史,提供撤销/重做功能:
    import { ref } from 'vue'
    import { useRefHistory } from '@vueuse/core'

    const counter = ref(0)
    const { history, undo, redo } = useRefHistory(counter)

    counter.value++
    console.log(history.value) // [{ snapshot: 1, timestamp: 1615680285891 }]

    undo()
    console.log(counter.value) // 0
  2. useDark
    方便地切换深色模式:
    import { useDark, useToggle } from '@vueuse/core'

    const isDark = useDark()
    const toggleDark = useToggle(isDark)
  3. useLocalStorage
    在localStorage中持久化状态:
    import { useLocalStorage } from '@vueuse/core'

    // 在setup中
    const state = useLocalStorage('my-storage', { name: 'Apple', color: 'red' })

    // 修改state会自动同步到localStorage
    state.value.name = 'Banana'
  4. useVModel
    简化v-model的使用:
    import { useVModel } from '@vueuse/core'

    export default {
    props: ['modelValue'],
    setup(props, { emit }) {
    const value = useVModel(props, 'modelValue', emit)

    return { value }
    }
    }
  5. useEventListener
    方便地添加事件监听:
    import { useEventListener } from '@vueuse/core'

    export default {
    setup() {
    const element = ref(null)

    useEventListener(element, 'click', (e) => {
    console.log('Clicked!', e)
    })
    }
    }

VueUse提供了大量实用的组合式函数,涵盖了状态管理、DOM操作、网络请求、动画等多个方面,可以大大提高Vue应用的开发效率。它的使用非常灵活,可以按需引入所需的函数。对于Vue开发者来说,VueUse绝对是一个值得尝试和使用的工具库。