Praktik Terbaik dan Kesalahan Umum Pinia
Cara menjaga store Pinia tetap mudah dipelihara pada aplikasi Vue skala menengah hingga besar.
1. Fokus wawancara
- Batas desain store
- Jebakan reaktivitas
- Praktik maintainability tingkat tim
2. Prinsip desain store
Tanggung jawab tunggal per store
useAuthStore();
useUserStore();
useCatalogStore();
Hindari satu mega store yang mencampur concern yang tidak terkait.
Pertahankan store sebagai container state
Prioritaskan:
- state
- getter deterministik
- action yang terfokus
Pindahkan workflow bisnis yang berat ke composable/service.
Jika memungkinkan, taruh side effect di luar store
Daripada menaruh seluruh orkestrasi API langsung di action store, gunakan composable untuk workflow dan jaga action store tetap fokus pada update state.
3. Kesalahan umum
Kesalahan 1: destructuring langsung state/getter
// bad: reactivity can be lost
const { token, isLoggedIn } = authStore;
// good
const { token, isLoggedIn } = storeToRefs(authStore);
Kesalahan 2: mengakses store di luar konteks valid
Panggil store di setup, composable, atau lokasi yang aman terhadap lifecycle aplikasi.
Kesalahan 3: dependensi store melingkar
Store A mengimpor Store B dan Store B mengimpor Store A menyebabkan perilaku runtime yang rapuh.
Kesalahan 4: memodifikasi salinan non-reaktif
Selalu lakukan update melalui referensi reaktif atau action.
4. Standar praktis
- Gunakan tipe TypeScript untuk state dan payload
- Jaga nama action tetap eksplisit (
setUserProfile,resetSession) - Kelompokkan store berdasarkan domain bisnis
- Tambahkan method reset untuk logout/pergantian akun
- Jaga kebijakan persistence tetap eksplisit per field
5. Ringkasan siap wawancara
Saya menjaga store tetap kecil dan fokus domain, menghindari jebakan reaktivitas dengan
storeToRefs, memindahkan orkestrasi kompleks ke composable, serta menegakkan typing dan strategi reset yang jelas.