# 组合式API ## setup函数 ### 基本用法 ```vue Count: {{ count }} Double: {{ doubleCount }} +1 ``` ## ref与reactive ### ref 用于基本类型和需要替换整个对象的场景。 ```vue ``` ### reactive 用于对象类型,返回原始对象的代理。 ```vue ``` ## 组合式函数 ### 创建组合式函数 ```javascript // useCounter.js import { ref, computed } from 'vue' export function useCounter(initialValue = 0) { const count = ref(initialValue) const doubleCount = computed(() => count.value * 2) function increment() { count.value++ } function decrement() { count.value-- } function reset() { count.value = initialValue } return { count, doubleCount, increment, decrement, reset } } ``` ### 使用组合式函数 ```vue Count: {{ count }} Double: {{ doubleCount }} +1 -1 Reset ``` ### 鼠标位置追踪 ```javascript // useMouse.js import { ref, onMounted, onUnmounted } from 'vue' export function useMouse() { const x = ref(0) const y = ref(0) function update(event) { x.value = event.pageX y.value = event.pageY } onMounted(() => { window.addEventListener('mousemove', update) }) onUnmounted(() => { window.removeEventListener('mousemove', update) }) return { x, y } } ``` ```vue 鼠标位置: {{ x }}, {{ y }} ``` ## provide/inject ### 提供数据 ```vue ``` ### 注入数据 ```vue ``` ## toRef与toRefs ```vue ```
Count: {{ count }}
Double: {{ doubleCount }}
鼠标位置: {{ x }}, {{ y }}