mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-21 06:45:00 +00:00
Merge pull request #610 from cudr/navigate_fix
Navigate from /a/[id] to /b/[id] fix
This commit is contained in:
@@ -289,7 +289,7 @@ export async function hydrate_target(target: Target): Promise<{
|
|||||||
const j = l++;
|
const j = l++;
|
||||||
|
|
||||||
const segment = segments[i];
|
const segment = segments[i];
|
||||||
if (!session_dirty && current_branch[i] && current_branch[i].segment === segment) return current_branch[i];
|
if (!session_dirty && current_branch[i] && current_branch[i].segment === segment && current_branch[i].part === part.i) return current_branch[i];
|
||||||
|
|
||||||
const { default: component, preload } = await load_component(components[part.i]);
|
const { default: component, preload } = await load_component(components[part.i]);
|
||||||
|
|
||||||
@@ -306,7 +306,7 @@ export async function hydrate_target(target: Target): Promise<{
|
|||||||
preloaded = initial_data.preloaded[i + 1];
|
preloaded = initial_data.preloaded[i + 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
return (props[`level${j}`] = { component, props: preloaded, segment });
|
return (props[`level${j}`] = { component, props: preloaded, segment, part: part.i });
|
||||||
}));
|
}));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
props.error = error;
|
props.error = error;
|
||||||
|
|||||||
3
test/apps/basics/src/routes/dirs/bar/[a].svelte
Normal file
3
test/apps/basics/src/routes/dirs/bar/[a].svelte
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<h1>A page</h1>
|
||||||
|
|
||||||
|
<a href="dirs/foo/xyz">same segment</a>
|
||||||
1
test/apps/basics/src/routes/dirs/foo/[b].svelte
Normal file
1
test/apps/basics/src/routes/dirs/foo/[b].svelte
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<h1>B page</h1>
|
||||||
@@ -282,6 +282,17 @@ describe('basics', function() {
|
|||||||
assert.equal(await title(), 'bar');
|
assert.equal(await title(), 'bar');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('navigates between dynamic routes with same segments', async () => {
|
||||||
|
await page.goto(`${base}/dirs/bar/xyz`);
|
||||||
|
await start();
|
||||||
|
|
||||||
|
assert.equal(await title(), 'A page');
|
||||||
|
|
||||||
|
await page.click('[href="dirs/foo/xyz"]');
|
||||||
|
await wait(50);
|
||||||
|
assert.equal(await title(), 'B page');
|
||||||
|
});
|
||||||
|
|
||||||
it('runs server route handlers before page handlers, if they match', async () => {
|
it('runs server route handlers before page handlers, if they match', async () => {
|
||||||
const json = await get(`${base}/middleware`, {
|
const json = await get(`${base}/middleware`, {
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
Reference in New Issue
Block a user