Skip to content

Commit 7e47e29

Browse files
committedFeb 5, 2024
chore: Query spy with reactive useSearchParams
1 parent 0619787 commit 7e47e29

File tree

1 file changed

+7
-27
lines changed
  • packages/docs/src/app/playground/(demos)/_components

1 file changed

+7
-27
lines changed
 

‎packages/docs/src/app/playground/(demos)/_components/query-spy.tsx

+7-27
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,30 @@
11
'use client'
22

33
import { useSearchParams } from 'next/navigation'
4-
import { subscribeToQueryUpdates } from 'nuqs'
54
import React from 'react'
65
import { QuerySpySkeleton } from './query-spy.skeleton'
76

87
export function QuerySpy(props: React.ComponentProps<'pre'>) {
9-
const initialSearchParams = useSearchParams()
10-
const [search, setSearch] = React.useState<URLSearchParams>(() => {
11-
if (typeof location !== 'object') {
12-
// SSR
13-
const out = new URLSearchParams()
14-
if (!initialSearchParams) {
15-
return out
16-
}
17-
for (const [key, value] of initialSearchParams) {
18-
out.set(key, value)
19-
}
20-
return out
21-
} else {
22-
return new URLSearchParams(location.search)
23-
}
24-
})
25-
26-
React.useLayoutEffect(
27-
() => subscribeToQueryUpdates(({ search }) => setSearch(search)),
28-
[]
29-
)
30-
8+
const searchParams = useSearchParams()
319
return (
3210
<QuerySpySkeleton {...props}>
33-
{search.size > 0 && (
11+
{searchParams.size > 0 && (
3412
<span className="text-zinc-500">
3513
?
36-
{Array.from(search.entries()).map(([key, value], i) => (
14+
{Array.from(searchParams.entries()).map(([key, value], i) => (
3715
<React.Fragment key={key + i}>
3816
<span className="text-[#005CC5] dark:text-[#79B8FF]">{key}</span>=
3917
<span className="text-[#D73A49] dark:text-[#F97583]">
4018
{value}
4119
</span>
42-
{i < search.size - 1 && <span className="text-zinc-500">&</span>}
20+
{i < searchParams.size - 1 && (
21+
<span className="text-zinc-500">&</span>
22+
)}
4323
</React.Fragment>
4424
))}
4525
</span>
4626
)}
47-
{search.size === 0 && (
27+
{searchParams.size === 0 && (
4828
<span className="italic text-zinc-500">{'<empty query>'}</span>
4929
)}
5030
</QuerySpySkeleton>

0 commit comments

Comments
 (0)