Strategi Persistence Pinia
Persistence harus disengaja: tidak semua state perlu bertahan setelah refresh.
1. Fokus wawancara
- Opsi persistence di Pinia
- Keputusan penyimpanan per field
- Batas keamanan
2. Opsi persistence
Opsi A: pinia-plugin-persistedstate
export const usePrefsStore = defineStore('prefs', {
state: () => ({ theme: 'light', locale: 'en' }),
persist: true,
});
Juga dapat mengonfigurasi storage kustom dan path yang dipilih.
Opsi B: composable storage VueUse
const theme = useLocalStorage<'light' | 'dark'>('theme', 'light');
const dismissedTips = useSessionStorage<boolean>('dismissedTips', false);
Berguna saat hanya field tertentu yang perlu persistence.
Opsi C: persistence manual
Memungkinkan, tetapi mudah salah dan lebih sulit dipelihara.
3. Apa yang dipersist vs tidak dipersist
Persist:
- theme / locale
- preferensi UI
- filter non-sensitif
Jangan dipersist:
- access token mentah pada konteks yang tidak aman
- field profil pengguna sensitif tanpa kebijakan yang jelas
- state loading sementara yang berumur pendek
4. Rekomendasi produksi
- Definisikan matriks persistence per store
- Gunakan
sessionStorageuntuk data sesi pendek - Gunakan version key eksplisit untuk migrasi
- Sediakan fallback aman saat skema tersimpan berubah
5. Ringkasan siap wawancara
Saya memilih persistence berdasarkan sensitivitas data dan masa hidupnya. Saya menggunakan plugin atau VueUse untuk persistence yang terprediksi, menghindari penyimpanan nilai sensitif secara buta, dan memelihara key yang aman untuk migrasi.