Vue 3 Composition API

The Composition API is a new way to write components in Vue 3. Instead of defining data, methods, and computed separately (like in the Options API), you group related logic inside a single setup() function.

Options API vs Composition API

FeatureOptions APIComposition API
Where logic livesSpread across data, methods, computedAll grouped inside setup()
ReusabilityMixins (can cause conflicts)Composables (functions, very flexible)
TypeScript supportLimitedMuch better (direct function usage)
Readability in large componentsLogic is scattered in different blocksLogic is grouped together → more maintainable
Vue 2 supportDefault approachBackported via plugin, native in Vue 3+

1. Basic Example

Let’s start with a simple counter using ref.

2. Reactive Objects

Use reactive() to create reactive state for objects and arrays.

3. Computed Properties

computed() lets you create derived state based on other data.

4. Watchers

watch() lets you react to state changes.

5. Reusable Composables

You can create custom functions (called composables) that encapsulate logic and reuse it across components.

// useCounter.js
import { ref } from 'vue';

export function useCounter() {
  const count = ref(0);
  const increment = () => count.value++;
  const decrement = () => count.value--;
  return { count, increment, decrement };
}

Summary

  • ref() → reactive primitives like numbers and strings
  • reactive() → reactive objects and arrays
  • computed() → derived state
  • watch() → react to state changes
  • Composables → reusable logic across components