Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to route programmatically in SvelteKit?

I want to be able manage history of my SvelteKit app while simultaneously making sure the whole routing system of SvelteKit doesn't get affected in any way.

Something like:

function routeToPage(route: string) {
   router.push(`/${route}`) // equivalent of this function
}
like image 879
Himujjal Avatar asked Jun 30 '21 02:06

Himujjal


1 Answers

Answering my own question thanks to Theo from SvelteKit Discord:

Use https://kit.svelte.dev/docs#modules-$app-navigation.

import { goto } from '$app/navigation';

function routeToPage(route: string, replaceState: boolean) {
   goto(`/${route}`, { replaceState }) 
}

replaceState == true will replace the route instead of adding to the browser history. So, when you click back, you will not go back to the route you came from.

To go back use History API.

import { goto } from '$app/navigation';

function goBack(defaultRoute = '/home') {
  const ref = document.referrer;
  goto(ref.length > 0 ? ref : defaultRoute)
}
like image 67
Himujjal Avatar answered Sep 21 '22 18:09

Himujjal