Fungsi computed dan methods property pada Vue.js
Menurut teman-teman, apa yang membedakan antara fungsi computed dan methods property pada Vue.js?
Pada kondisi yang bagaimana menggunakan fungsi-fungsi tersebut?
Nah, sekarang mari kita bahas lebih mendalam:
1) Inti Perbedaan: Konsep & Perilaku
Computed
Nilai turunan yang di-cache berdasarkan reactive dependencies; hanya dihitung ulang ketika dependensinya berubah. Ini setara mekanisme memoization bawaan Vue.
Method
Fungsi yang dievaluasi setiap kali dipanggil (mis. pada render ulang atau event). Tidak ada caching.
Implikasi: untuk hasil akhir yang sama, template yang memanggil method akan mengeksekusinya berulang, sedangkan computed hanya re-evaluate saat dependensi berubah.
2) Dampak Kinerja/Performa
Computed
(+): mengurangi komputasi berulang karena caching → baik untuk transformasi data yang sering dipakai (filter/sort/mapping daftar, derive label, dsb.)
(-): dalam kasus yang spesifik, untuk objek/array sangat besar dan kompleks, “dependency tracking” + invalidasi cache dapat menjadi mahal; kadang lebih efisien memakai method atau strategi lain (mis. pagination, virtual list, praproses di Web Worker).
Method
tanpa cache; aman untuk operasi ringan atau ketika hasil selalu perlu dihitung ulang (tergantung argumen/parameter dinamis).
**Catatan umum: Vue sudah cukup efisien untuk kasus lazim; optimasi manual baru relevan di skenario menantang (daftar besar, interaksi berat).
3) Best Practice Kapan Menggunakan Computed vs Method Property
Pilih computed property apabila:
1. Nilai adalah turunan deterministik dari state reaktif, tanpa argumen saat digunakan di template, dan sering dipakai ulang. (Contoh: daftar ter-filter, derived flags, formatting yang berulang).
2. Anda ingin menghindari ekspresi kompleks di template (membuat template tetap deklaratif & bersih).
3. Menggunakan Composition API: bungkus logika turunan dalam computed(() => ...) agar reaktif, mudah diuji, dan terstruktur.
Pilih method property apabila:
1. Fungsi memerlukan argumen (computed tidak menerima argumen ketika dipakai langsung di template).
2. Hasil tidak perlu di-cache atau selalu berbeda tiap pemanggilan (mis. RNG, timestamp, pemanggilan API, atau kalkulasi per item saat v-for yang ringan).
3. Anda ingin eksekusi eksplisit pada event (klik, submit), bukan reaksi otomatis terhadap perubahan state.
Hindari computed property apabila:
Dependensi berupa struktur raksasa/ber-nested banyak sehingga tracking + invalidasi memakan biaya; pertimbangkan method, memoization manual, atau mengecilkan ruang masalah (chunking/pagination).
Referensi:
https://vuejs.org/guide/essentials/computed
https://www.geeksforgeeks.org/javascript/vue-js-computed-properties/
https://www.geeksforgeeks.org/javascript/methods-vs-computed-in-vue/
https://dev.to/pecus/when-to-avoid-vuejs-computed-properties-for-greater-performance-5anj
https://dev.to/sonaykara/computed-properties-in-vuejs-composition-api-2l7i

Tidak ada komentar
Posting Komentar