Bases de Svelte
Introduction
Liaisons
Classes et styles
Svelte avancé
Réutiliser du contenu
Mouvements
Liaisons avancées
Transitions avancées
API de contexte
Éléments spéciaux
<script module>
Next steps
Bases de SvelteKit
Introduction
Routing
Chargement de données
En-têtes et cookies
Modules partagés
Formulaires
$app/state
Erreurs et redirections
SvelteKit avancé
Options de page
Options de lien
Routing avancé
Chargement avancé
Variables d’environnement
Conclusion
Il est souvent utile d’être capable de suivre la valeur d’un morceau d’état lorsqu’évolue dans le temps.
Dans la fonction addNumber
, nous avons ajouté une déclaration console.log
. Mais si vous cliquez
sur le bouton et ouvrez la console (en utilisant le bouton sur la droite de la barre d’URL), vous
verrez un warning, et un message expliquant que le message n’a pas pu être cloné.
La raison est que numbers
est un
proxy
réactif. Il y a deux possibilités pour résoudre cette situation. D’abord, nous pouvons créer un
snapshot non réactif de l’état avec $state.snapshot(...)
:
function addNumber() {
numbers.push(numbers.length + 1);
console.log($state.snapshot(numbers));
}
Il est également possible d’utiliser la rune $inspect
pour automatiquement logguer un snapshot de
l’état à chaque fois qu’il change. Ce code sera automatiquement exclu de votre build de production :
function addNumber() {
numbers.push(numbers.length + 1);
console.log($state.snapshot(numbers));
}
$inspect(numbers);
Vous pouvez personnaliser la manière dont l’information est affichée en utilisant
$inspect(...).with(fn)
— par exemple, vous pouvez utiliser console.trace
pour vérifier l’endroit
où le changement d’état a été initié :
$inspect(numbers).with(console.trace);
Modifier cette page sur Github
<script>
let numbers = $state([1, 2, 3, 4]);
let total = $derived(numbers.reduce((t, n) => t + n, 0));
function addNumber() {
numbers.push(numbers.length + 1);
console.log(numbers);
}
</script>
<p>{numbers.join(' + ')} = {total}</p>
<button onclick={addNumber}>
Ajouter un nombre
</button>