Skip to content

wanjas/react-use-url-state

Folders and files

NameName
Last commit message
Last commit date

Latest commit

bd8cdba · Sep 20, 2024

History

63 Commits
Nov 8, 2023
May 22, 2024
Sep 20, 2024
Nov 8, 2023
Nov 8, 2023
Nov 8, 2023
Nov 9, 2023
Nov 18, 2023
Nov 8, 2023
Nov 8, 2023
Jan 5, 2024
Nov 8, 2023
Nov 8, 2023
Dec 14, 2023
May 22, 2024
May 22, 2024
Nov 17, 2023

Repository files navigation

react-use-url-state

npm npm type definitions npm npm bundle size Known Vulnerabilities

Use URL params to store a state in React.

  • Handle numbers, dates, booleans, and arrays.
  • Have a type-safety with Zod
  • CJS and ESM support
  • 0 dependencies

https://example.com/?text=query&number=10&date=2023-11-29T13%3A52%3A50.230Z

<=>

{ text: 'query', number: 10, date: new Date('2023-11-29T13:52:50.230Z') }

Installation

npm i react-use-url-state zod

Documentation

📝Documentation and examples

Usage

💬 It's important to use .coerce on your Zod schema to ensure that the values are parsed correctly from the URL.

function MyComponent() {
  const { data, setState, setValue, setValues, isError, error } = useUrlState(
    z.object({
      name: z.string(),
      age: z.coerce.number(),
      birthDate: z.coerce.date().optional(),
    }),
  );

  return <div>
    <Button
      onClick={() => {
        setState({ name: 'test', age: 10, birthDate: new Date() });
      }}
    >
      Set state
    </Button>

    <Button
      onClick={() => {
        setValue('age', data.age + 1);
      }}
    >
      Increment age
    </Button>

    <pre>{JSON.stringify(data, null, 2)}</pre>
  </div>
}