Bases de Svelte
Introduction
Bindings
Classes and styles
Advanced Svelte
Advanced reactivity
Motion
Advanced bindings
Advanced transitions
Context API
Special elements
<script module>
Next steps
Basic SvelteKit
Introduction
Routing
Loading data
Headers and cookies
Shared modules
API routes
$app/state
Errors and redirects
Advanced SvelteKit
Page options
Link options
Advanced routing
Advanced loading
Environment variables
Conclusion
Dans cet exercice, nous avons oublié de passer dans App.svelte
la prop name
attendue par
PackageInfo.svelte
, ce qui implique que l’élément <code>
est vide et que le lien vers npm est
cassé.
Nous pourrions corriger cela en ajoutant la prop...
App
<PackageInfo
name={pkg.name}
version={pkg.version}
description={pkg.description}
website={pkg.website}
/>
... mais puisque les propriétés de pkg
correspondent aux props attendues par le composant, nous
pouvons à la place les ‘étaler’ sur le composant :
App
<PackageInfo {...pkg} />
À l’inverse, dans
PackageInfo.svelte
nous pouvons obtenir un objet contenant toutes les props qui lui sont passées en utilisant la propriété de reste...let { name, ...stuff } = $props();
...ou en ne déstructurant pas du tout :
let stuff = $props();
... et dans ce cas vous pouvez accéder aux propriétés via leur path :
console.log(stuff.name, stuff.version, stuff.description, stuff.website);
Modifier cette page sur Github
précédent suivant
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script>
import PackageInfo from './PackageInfo.svelte';
const pkg = {
name: 'svelte',
version: 5,
description: 'rapide comme l\'éclair',
website: 'https://sveltefr.dev'
};
</script>
<PackageInfo
version={pkg.version}
description={pkg.description}
website={pkg.website}
/>