前置知识: Vue 3

组合式API优势场景

1 minAdvanced2026/6/14

Vue 3组合式API vs 选项式API对比与优势场景分析。

1. 两种 API 对比

1.1 选项式 API

export default {
  data() {
    return { count: 0, user: null };
  },
  computed: {
    doubled() {
      return this.count * 2;
    },
  },
  methods: {
    increment() {
      this.count++;
    },
  },
  mounted() {
    this.fetchUser();
  },
};

1.2 组合式 API

export default {
  setup() {
    const count = ref(0);
    const user = ref(null);
    const doubled = computed(() => count.value * 2);
    const increment = () => count.value++;
    onMounted(() => fetchUser());
    return { count, user, doubled, increment };
  },
};

2. 组合式 API 优势

2.1 逻辑复用

// 可复用的鼠标位置逻辑
function useMouse() {
  const x = ref(0);
  const y = ref(0);
  const update = (e) => {
    x.value = e.clientX;
    y.value = e.clientY;
  };
  onMounted(() => window.addEventListener('mousemove', update));
  onUnmounted(() => window.removeEventListener('mousemove', update));
  return { x, y };
}

// 在任何组件中使用
const { x, y } = useMouse();

2.2 逻辑关注点聚合

选项式 API 中,同一功能的代码分散在 data/methods/computed 中;组合式 API 中,相关代码聚合在一起。

2.3 更好的类型推导

// 组合式 API:自动类型推导
const count = ref(0); // Ref<number>
const name = ref(''); // Ref<string>

// 选项式 API:需要额外声明

3. 适用场景

场景推荐 API
简单组件选项式 API
逻辑复用组合式 API
TypeScript 项目组合式 API
大型项目组合式 API
快速原型选项式 API