Skip to Content
DocsCloud UI HooksuseURLQueryState

useURLQueryState

Manage state synced with URL query parameters.

Import

import { useURLQueryState } from '@tidbcloud/uikit'

Usage

useURLQueryState keeps state in sync with URL query parameters. When the state changes, the URL is updated. When the URL changes (e.g., back/forward navigation), the state is updated.

import { useURLQueryState } from '@tidbcloud/uikit' import { TextInput } from '@tidbcloud/uikit' function Demo() { const [search, setSearch] = useURLQueryState('search', '') return <TextInput value={search} onChange={(e) => setSearch(e.currentTarget.value)} placeholder="Search..." /> }

This will update the URL to ?search=value when the input changes.

Multiple Parameters

import { useURLQueryState } from '@tidbcloud/uikit' import { TextInput, NumberInput, Stack } from '@tidbcloud/uikit' function Demo() { const [search, setSearch] = useURLQueryState('q', '') const [page, setPage] = useURLQueryState('page', '1') return ( <Stack> <TextInput value={search} onChange={(e) => setSearch(e.currentTarget.value)} label="Search" /> <NumberInput value={parseInt(page)} onChange={(val) => setPage(String(val))} label="Page" /> </Stack> ) }

URL State Persistence

When a user bookmarks or shares the URL, the state will be restored from the query parameters.

Notes

  • State is stored as strings in the URL
  • Empty values are removed from the URL
  • Compatible with browser history (back/forward buttons)

Definition

function useURLQueryState(key: string, defaultValue: string): [string, (value: string) => void]
Last updated on