Skip to content

Commit 6bc229a

Browse files
authored
fix: Use correct keys for state sync (#759)
Closes #758.
1 parent 72a5b2b commit 6bc229a

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/// <reference types="cypress" />
2+
3+
describe('repro-758', () => {
4+
it('honors urlKeys when navigating back after a push', () => {
5+
cy.visit('/app/repro-758')
6+
cy.contains('#hydration-marker', 'hydrated').should('be.hidden')
7+
cy.get('button').click()
8+
cy.get('#state').should('have.text', 'test')
9+
cy.go('back')
10+
cy.get('#state').should('be.empty')
11+
})
12+
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'use client'
2+
3+
import { parseAsString, useQueryStates } from 'nuqs'
4+
import { Suspense } from 'react'
5+
6+
export default function Page() {
7+
return (
8+
<Suspense>
9+
<Client />
10+
</Suspense>
11+
)
12+
}
13+
14+
function Client() {
15+
const [{ query }, setSearchParams] = useQueryStates(
16+
{
17+
query: parseAsString
18+
},
19+
{
20+
history: 'push',
21+
urlKeys: {
22+
query: 'q'
23+
}
24+
}
25+
)
26+
return (
27+
<>
28+
<button onClick={() => setSearchParams({ query: 'test' })}>
29+
Set query
30+
</button>
31+
<p id="state">{query}</p>
32+
</>
33+
)
34+
}

packages/nuqs/src/useQueryStates.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ export function useQueryStates<KeyMap extends UseQueryStatesKeysMap>(
123123
)
124124
setInternalState(state)
125125
}, [
126-
Object.keys(resolvedUrlKeys)
126+
Object.values(resolvedUrlKeys)
127127
.map(key => initialSearchParams?.get(key))
128128
.join('&')
129129
])

0 commit comments

Comments
 (0)