Semua Artikel
Tutorial

Memahami Composition API di Vue 3 Tanpa Pusing

Refs, reactive, computed, dan composable dijelaskan dengan bahasa sederhana plus contoh kode yang bisa langsung dicoba.

CehaDev 10 Agustus 2026 1 mnt baca
𝕏 f

Ketika pertama pindah dari Options API, saya juga bingung: kenapa harus ref() segalanya? Setelah beberapa bulan dipakai serius, Composition API justru terasa lebih jujur β€” data dan logika yang saling terkait bisa hidup berdekatan.

Ref vs Reactive

Aturan mainnya sederhana: pakai ref untuk nilai tunggal, reactive untuk objek yang bentuknya memang seperti state.

import { ref, reactive } from 'vue'

const counter = ref(0)               // angka, string, boolean
const form = reactive({              // objek form
  name: '',
  email: ''
})

Yang sering bikin tersandung adalah .value. Ingat saja: di dalam script selalu .value, di template tidak perlu.

Computed untuk Turunan Data

Hindari menulis fungsi yang dihitung ulang di banyak tempat. Bungkus jadi computed supaya otomatis di-cache:

const fullName = computed(() =>
  `${form.name}`.trim() || 'Anonim'
)

Computed itu seperti rumus di spreadsheet: berubah kalau bahan bacanya berubah, tidak perlu dipanggil manual.

Composable: Logika yang Dipakai Bersama

Bagian favorit saya. Ambil contoh hook deteksi scroll:

export function useScrollY() {
  const y = ref(0)
  const onScroll = () => (y.value = window.scrollY)
  onMounted(() => window.addEventListener('scroll', onScroll, { passive: true }))
  onBeforeUnmount(() => window.removeEventListener('scroll', onScroll))
  return { y }
}

Sekali ditulis, dipakai di mana saja β€” sidebar, progress bar, tombol back-to-top.

Kapan Tetap Pakai Options API?

Tidak ada dosa. Untuk komponen kecil yang state-nya statis, Options API masih lega dan mudah dibaca. Tapi begitu logika mulai saling silang β€” fetch + polling + cleanup β€” Composition API jauh lebih rapi.

Selamat mencoba, dan jangan lupa TypeScript-kan composables kamu!

#Vue #Nuxt.js #TypeScript

Komentar

Komentar tampil publik β€” hindari membagikan data pribadi.

Belum ada komentar

Jadilah yang pertama menyampaikan pendapat!

Artikel Lainnya