Functional-style refs for Vue. Inspired by @antfu.
Requires Vue 3.5+
- ✨ Extend refs with functional style.
- 💖 Compatible with existing libraries. Tested on Element Plus and VueUse.
- 🦾 Full TypeScript support.
- ⚡️ Supports Vite, Rollup, esbuild.
If you're using pnpm or Yarn, try this approach first!
pnpm i vue-functional-refIf you're not using pnpm but using Rollup, Vite or esbuild, try this approach.
npm i vue-functional-refSupports Vite, Rollup and esbuild.
import VueFunctionalRef from 'vue-functional-ref/vite'
//                   Rollup: 'vue-functional-ref/rollup'
//                  esbuild: 'vue-functional-ref/esbuild'
export default {
  plugins: [VueFunctionalRef()],
}// tsconfig.json
{
  "compilerOptions": {
    // ...
    "paths": {
      "@vue/reactivity": ["./node_modules/vue-functional-ref/types"],
    },
  },
}import { ref } from 'vue'
const count = ref(1)
count.set(10)
console.log(count())
// Mutate value inside of object
const obj = ref({ count: 1 })
obj.mutate((obj) => obj.count++)import { computed, ref } from 'vue'
const count = ref(1)
const double = computed(() => count() * 2)
console.log(double() === 2) // true
console.log(double.set === undefined) // trueMIT License © 2022-PRESENT Kevin Deng