Header Ads

  • Breaking News

    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

    Post Bottom Ad