useIsomorphicLayoutEffect
Efek yang aman saat dirender di server. Di Vue tidak ada yang perlu dipilih.
Lebar jendela: belum diukur
Di HTML hasil render server nilainya belum diukur — dan itu memang satu-satunya jawaban yang benar di sana.
Tidak ada yang perlu dipasang.
Vue sudah menyediakan padanannya — onMounted(). Halaman ini menjelaskan cara memakainya.
onMounted tidak pernah berjalan di server, jadi tidak ada dua jalur yang harus dipilih:
onMounted(() => {
lebar.value = window.innerWidth // aman
})Yang perlu diperhatikan justru hasil gambarnya, bukan efeknya: nilai yang cuma bisa diketahui di peramban harus punya nilai awal yang sama di server dan pada gambaran pertama, kalau tidak Vue akan membuang bagian itu lalu menggambarnya ulang.
const lebar = ref<number | null>(null) // null di server, null di gambar pertamaUntuk keperluan yang benar-benar harus berjalan sebelum peramban menggambar, ada flush: 'sync' — tapi jarang benar-benar dibutuhkan:
watch(sumber, sesuaikanPosisi, { flush: 'sync' })