@@ -191,16 +191,13 @@ function LocalStorageDisclosure() {
191191
192192Disclosures can maintain their expanded state across page reloads by using URL state.
193193
194+ import {parseAsBoolean , useQueryState } from ' nuqs' ;
195+
194196export function URLStateDisclosure() {
195- const [expanded, setExpanded] = useState ( new URLSearchParams ( window . location . search ). get ( ' my-disclosure-key' ) === ' true ' );
197+ const [expanded, setExpanded] = useQueryState ( ' my-disclosure-key' , parseAsBoolean . withDefault ( false ) );
196198
197199 return (
198- <Disclosure defaultExpanded = { expanded } onExpandedChange = { (expanded ) => {
199- const url = new URL (window .location .href );
200- url .searchParams .set (' my-disclosure-key' , expanded ? ' true' : ' false' );
201- window .history .pushState ({}, ' ' , url .toString ());
202- setExpanded (expanded );
203- }} >
200+ <Disclosure defaultExpanded = { expanded } onExpandedChange = { setExpanded } >
204201 <Disclosure.Title >The expanded state is saved to URL state</Disclosure.Title >
205202 <Disclosure.Content >Reload the page to see the expanded state is remembered and new params are added to the URL</Disclosure.Content >
206203 </Disclosure >
@@ -215,21 +212,16 @@ export function URLStateDisclosure() {
215212</Storybook.Demo >
216213
217214``` tsx
215+ import {parseAsBoolean , useQueryState } from ' nuqs' ;
216+
218217function URLStateDisclosure() {
219- const [expanded, setExpanded] = useState <boolean >(
220- new URLSearchParams (window .location .search ).get (' my-disclosure-key' ) === ' true'
218+ const [expanded, setExpanded] = useQueryState (
219+ ' my-disclosure-key' ,
220+ parseAsBoolean .withDefault (false )
221221 );
222222
223223 return (
224- <Disclosure
225- defaultExpanded = { expanded }
226- onExpandedChange = { expanded => {
227- const url = new URL (window .location .href );
228- url .searchParams .set (' my-disclosure-key' , expanded ? ' true' : ' false' );
229- window .history .pushState ({}, ' ' , url .toString ());
230- setExpanded (expanded );
231- }}
232- >
224+ <Disclosure defaultExpanded = { expanded } onExpandedChange = { setExpanded } >
233225 <Disclosure.Title >The expanded state is saved to URL state</Disclosure.Title >
234226 <Disclosure.Content >
235227 Reload the page to see the expanded state is remembered
0 commit comments