kliping.pro
  • Docs
  • Directory
  • Colors
  • Typeset
Hooks
  • State7
  • Advanced6
  • Lifecycle16
  • Browser21
    • useActiveElement
    • useBattery
    • useClickAnyWhere
    • useClickAway
    • useClipboard
    • useDocumentVisibility
    • useElementSize
    • useEventListener
    • useFps
    • useFullscreen
    • useHash
    • useHover
    • useInViewport
    • useIsMatchMedia
    • useIsOnline
    • useMouse
    • useNetwork
    • useOs
    • useScrollLock
    • useTextSelection
    • useTitle
  • Development1
  • Third-Party4
  • Libraries4

useHash

PreviousNext

Bagian # dari alamat halaman, yang bisa dibaca dan ditulis.

Bagian # dari alamat halaman, yang bisa dibaca dan ditulis.

Menulis ke sini mengubah alamatnya, dan itu memicu hashchange yang lalu membaca balik nilainya — jadi satu sumber kebenaran, bukan dua yang harus dijaga tetap sama. Perubahan dari luar (tombol kembali, tautan #bagian, kode lain) ikut terbaca tanpa perlakuan khusus.

Kosong saat dirender di server: di sana tidak ada alamat yang bisa dibaca, dan # memang tidak pernah dikirim ke server oleh peramban mana pun.

Installation ​

pnpm dlx shadcn-vue@latest add @kliping/use-hash

Perlu @kliping terdaftar di components.json project Anda. Lihat cara menyiapkannya.

Ikut terpasang sendiri: is-browser, try-on-mounted, use-event-listener.

Salin dulu is-browser, try-on-mounted, target, use-event-listener — masing-masing memuat sumbernya di halamannya sendiri — lalu tempel berkas ini.

ts
import { customRef } from 'vue'
import { isBrowser } from '@/lib/is-browser'
import { tryOnMounted } from '@/lib/try-on-mounted'
import { useEventListener } from '@/composables/use-event-listener'

export function useHash() {
  let value = ''
  let notify: (() => void) | undefined

  const read = () => (isBrowser ? window.location.hash : '')

  const update = () => {
    const next = read()
    if (next === value) return
    value = next
    notify?.()
  }

  const hash = customRef<string>((track, trigger) => {
    notify = trigger
    return {
      get() {
        track()
        return value
      },
      set(next) {
        if (!isBrowser) {
          value = next
          trigger()
          return
        }
        window.location.hash = next
      },
    }
  })

  tryOnMounted(update)
  useEventListener('hashchange', update)

  return hash
}

API ​

ts
export function useHash()
PrevioususeFullscreenNext useHover

On This Page

InstallationAPI
Dirilis di bawah lisensi MIT. Ditulis ulang untuk Vue dari shadcn-vue, shadcn-ui-blocks, dan shadcn-hooks. Hak cipta © 2026 Kliping