Kliping
KlipingBerandaDokumentasiKomponenBlocksVariasiTemplateDice UIHooks
Memulai
  • Pengenalan
  • Instalasi
  • Kredit
State
  • useBoolean
  • useControllableValue
  • useCounter
  • useDebounce
  • useResetState
  • useThrottle
  • useToggle
Lanjutan
  • useCreation
  • useCustomCompareEffect
  • useLatest
  • useLockFn
  • useMemoizedFn
  • usePrevious
Siklus Hidup
  • useDebounceEffect
  • useDebounceFn
  • useDeepCompareEffect
  • useDeepCompareLayoutEffect
  • useEffectEvent
  • useEffectWithTarget
  • useInterval
  • useIsHydrated
  • useIsomorphicLayoutEffect
  • useMount
  • useThrottleEffect
  • useThrottleFn
  • useTimeout
  • useUnmount
  • useUpdate
  • useUpdateEffect
Peramban
  • useActiveElement
  • useBattery
  • useClickAnyWhere
  • useClickAway
  • useClipboard
  • useDocumentVisibility
  • useElementSize
  • useEventListener
  • useFps
  • useFullscreen
  • useHash
  • useHover
  • useInViewport
  • useIsMatchMedia
  • useIsOnline
  • useMouse
  • useNetwork
  • useOs
  • useScrollLock
  • useTextSelection
  • useTitle
Pengembangan
  • useWhyDidYouUpdate
Paket Luar
  • useMcp
  • useQuery
  • useStickToBottom
  • useSwr
Pustaka
  • isBrowser
  • createContext
  • bacaElemen
  • saatTerpasang

useIsomorphicLayoutEffect

SebelumnyaBerikutnya

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:

ts
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.

ts
const lebar = ref<number | null>(null)   // null di server, null di gambar pertama

Untuk keperluan yang benar-benar harus berjalan sebelum peramban menggambar, ada flush: 'sync' — tapi jarang benar-benar dibutuhkan:

ts
watch(sumber, sesuaikanPosisi, { flush: 'sync' })
useIsHydrateduseMount
Dirilis di bawah lisensi MIT. Ditulis ulang untuk Vue dari shadcn-vue, shadcn-ui-blocks, dan shadcn-hooks. Hak cipta © 2026 Kliping