Skip to content

Composables

Composables encapsulate stateful logic using Composition API. This lesson covers practical patterns, syntax, and mistakes to avoid.

Reusable Composables

Composables encapsulate stateful logic using Composition API.

Name them useX and return a clear object/tuple API.

export function useMouse() {
  const x = ref(0)
  const y = ref(0)
  function onMove(e) { x.value = e.pageX; y.value = e.pageY }
  onMounted(() => window.addEventListener('mousemove', onMove))
  onUnmounted(() => window.removeEventListener('mousemove', onMove))
  return { x, y }
}

Mouse position composable with cleanup.

Design

accept maybe refs, cleanup always, small scope
  • Prefer Composition API + script setup.
  • Use computed for derived UI.
  • Keep side effects intentional.
  • Practice in a small Vite app.

Composables Cheatsheet

Quick reference for patterns covered in this lesson.

Item Example Purpose
useX name Convention
toValue normalize Inputs
SSR guards Window
testing call in setup Harness
pinia vs composable Scope
docs JSDoc DX

Side Effects

Register lifecycle hooks only while in setup context.

Common Mistakes

  • Secret instance dependencies.
  • No cleanup.

Key Takeaways

  • Composables is important in Vue apps.
  • Practice in SFCs.
  • Prefer clear naming.
  • Check Vue docs for details.

Pro Tip

Accept MaybeRefOrGetter inputs for flexible APIs.