Skip to main content

$app/state

SvelteKit rend disponibles trois objets d’état en lecture seule via le module $app/state, — page, navigating et updated.

Ce module a été ajouté avec la version 2.12. Si vous utilisez une version plus ancienne de SvelteKit, utilisez plutôt $app/stores.

import { navigating, page, updated } from '$app/state';

Un objet en lecture seule représentant une navigation en cours, avec des propriétés from, to, type et (si type === 'popstate') delta. Les valeurs de ces propriétés sont null lorsqu’aucune navigation n’est en cours, ou lors du rendu côté serveur.

const navigating:
	| import('@sveltejs/kit').Navigation
	| {
			from: null;
			to: null;
			type: null;
			willUnload: null;
			delta: null;
			complete: null;
	  };

page

Un objet réactif en lecture seule avec des informations concernant la page courante, servant plusieurs cas d’usage :

  • récupérer les data combinées de toutes les pages/layouts de votre arbre de composants (voir également la section charger des données)
  • récupérer la valeur courant de la propriété form n’importe où dans votre arbre de composant (voir également la section actions de formulaire)
  • récupérer l’état de la page défini via goto, pushState ou replaceState (voir également les sections goto, et shallow routing)
  • récupérer les métadonnées comme l’URL courante, la route courante et ses paramètres, et si oui ou non une erreur s’est produite
+layout
<script>
	import { page } from '$app/state';
</script>

<p>Actuellement sur la page {page.url.pathname}</p>

{#if page.error}
	<span class="red">Problème détecté</span>
{:else}
	<span class="small">Tous les systèmes sont opérationnels</span>
{/if}
<script lang="ts">
	import { page } from '$app/state';
</script>

<p>Actuellement sur la page {page.url.pathname}</p>

{#if page.error}
	<span class="red">Problème détecté</span>
{:else}
	<span class="small">Tous les systèmes sont opérationnels</span>
{/if}

Les changements sur l’objet page sont uniquement accessibles avec les runes. (La syntaxe ancienne de réactivité ne va refléter aucun changement)

+page
<script>
	import { page } from '$app/state';
	const id = $derived(page.params.id); // Ceci va correctement fourni l'id à jour sur cette page
	$: badId = page.params.id; // Ne pas utiliser ; ne va jamais être mis à jour après le chargement initial
</script>
<script lang="ts">
	import { page } from '$app/state';
	const id = $derived(page.params.id); // Ceci va correctement fourni l'id à jour sur cette page
	$: badId = page.params.id; // Ne pas utiliser ; ne va jamais être mis à jour après le chargement initial
</script>

Sur le serveur, les valeurs peuvent uniquement être lues lors du rendu (autrement dit, pas dans les fonctions load, par exemple). Dans le navigateur, les valeurs peuvent être lues à n’importe quel moment.

const page: import('@sveltejs/kit').Page;

updated

Une valeur réactive en lecture seule qui vaut initialement false. Si version.pollInterval est une valeur différente de zéro, SvelteKit va régulièrement vérifier (en faisant du polling) s’il existe de nouvelles versions de l’application et mettre à jour current à true lors qu’une nouvelle version existe. updated.check() permet de forcer une vérification immédiate, indépendamment du polling.

const updated: {
	get current(): boolean;
	check(): Promise<boolean>;
};

Modifier cette page sur Github llms.txt

précédent suivant