Skip to content

Commit

Permalink
fix: Revert "fix: avoid normalizing the fullPath (#2189)"
Browse files Browse the repository at this point in the history
This reverts commit c54fc84.

Fix #2216
  • Loading branch information
posva committed Apr 18, 2024
1 parent f85e5cb commit b78aa98
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 22 deletions.
24 changes: 15 additions & 9 deletions packages/router/__tests__/router.spec.ts
Expand Up @@ -534,16 +534,22 @@ describe('Router', () => {
})
})

// https://github.com/vuejs/router/issues/2187
it('keeps a consistent value on fullPath when resolving', async () => {
it('should be able to resolve a partially updated location', async () => {
const { router } = await newRouter()
const targetLoc = '/search#/?redirect=%2F%3Fid%3D1%23%2Fabc'
expect(router.resolve(targetLoc).fullPath).toBe(targetLoc)
await router.push(targetLoc)
expect(router.currentRoute.value.fullPath).toBe(targetLoc)
await router.push('/')
await router.replace(targetLoc)
expect(router.currentRoute.value.fullPath).toBe(targetLoc)
expect(
router.resolve({
// spread the current location
...router.currentRoute.value,
// then update some stuff, creating inconsistencies,
query: { a: '1' },
hash: '#a',
})
).toMatchObject({
query: { a: '1' },
path: '/',
fullPath: '/?a=1#a',
hash: '#a',
})
})

describe('navigation cancelled', () => {
Expand Down
20 changes: 7 additions & 13 deletions packages/router/src/router.ts
Expand Up @@ -525,19 +525,13 @@ export function createRouter(options: RouterOptions): Router {
// we need to run the decoding again
matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params))

const fullPath =
// @ts-expect-error: the rawLocation doesn't normally have a fullPath
// but sometimes it gets noramlized before being passed to resolve and we can
// resue it to avoid encoding an unencoded path from the user in order to be closer
// to the URL constructor behavior. vuejs/router#2187
rawLocation.fullPath ||
stringifyURL(
stringifyQuery,
assign({}, rawLocation, {
hash: encodeHash(hash),
path: matchedRoute.path,
})
)
const fullPath = stringifyURL(
stringifyQuery,
assign({}, rawLocation, {
hash: encodeHash(hash),
path: matchedRoute.path,
})
)

const href = routerHistory.createHref(fullPath)
if (__DEV__) {
Expand Down

0 comments on commit b78aa98

Please sign in to comment.