Skip to content

🧰 Collection of essential Vue Composition API utils works for Vue 2.x and 3.x

License

Notifications You must be signed in to change notification settings

The-Peso-G/vueuse

Β 
Β 

Repository files navigation

logo

NPM version Storybook Demos NPM Downloads GitHub last commit GitHub issues GitHub stars

Collection of essential Vue Composition API (inspired by react-use)

πŸš€ Features

  • 0 dependencies ⚑ No worry about your bundle size
  • Fully tree shakable 🌴 Only take what you want
  • Seamless migration πŸ•Ά Works for both Vue 3.x and 2.x
  • Browser compatible 🌐 Use it without complex building tools
  • Intractive docs & demos πŸŽͺ Check out the Storybook!
  • Optional Add-ons πŸ”Œ Firebase, vue-i18n, etc

πŸ¦„ Usage

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

new Vue({
  setup() {
    // tracks mouse position
    const { x, y } = useMouse()

    // is user prefers dark theme
    const isDark = usePreferredDark()

    // persist state in localStorage
    const state = useLocalStorage(
      'my-storage', 
      {
        name: 'Apple',
        color: 'red',
      },
    )

    return { x, y, isDark, state }
  }
})

Refer to functions and documentations for more details.

πŸ“¦ Install

for Vue 3.x (vue-next), demo here

npm i @vueuse/core@vue3

for Vue 2.x with composition-api polyfill

npm i @vue/composition-api @vueuse/core@vue2

Please register the Composition API Plugin before using APIs.

CDN

<!-- For Vue 3.x -->
<script src="https://unpkg.com/@vueuse/core@vue3"></script> 

<!-- For Vue 2.x -->
<script src="https://unpkg.com/@vueuse/core@vue2"></script>

It will be exposed to global variable as window.VueUse

⚑ Functions

You can checkout the full documents and live demos in Storybook.

More functions to be added. Please keep turned. (PRs are also welcome!)

πŸ”Œ Add-ons

The core package aims to be lightweight and dependence free. While the add-ons are wrapping popular packages into the consistent API style.

πŸ”¬ Technical Details

The Versioning

For every release, it will release two version of this package. The 3.x.x is used for Vue 3.x and the 2.x.x is used for 2.x. We use the major version number to distinguish the different target version will the minor and patch numbers are shared in both packages.

Different between 3.x and 2.x

Since the Composition API will be available in 3.x. Using it in 2.x require you use a polyfill. For 3.x build, we use the API from @vue/runtime-dom, and for 2.x, it's @vue/composition-api. All the functions exported in this package behaves the same.

// 3.x build
import { ref } from '@vue/runtime-dom'

// 2.x build
import { ref } from '@vue/composition-api'

🧱 Contribute

See the Contributing Guide

🌸 Thanks

This project is heavily inspired by following awesome projects.

Thanks!

πŸ‘¨β€πŸš€ Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

πŸ“„ License

MIT License Β© 2019-2020 Anthony Fu

About

🧰 Collection of essential Vue Composition API utils works for Vue 2.x and 3.x

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 78.2%
  • JavaScript 15.7%
  • CSS 5.4%
  • HTML 0.7%