在這個練習中,在 App.svelte
中,我們忘記傳遞 PackageInfo.svelte
預期的 name
prop,這表示 <code>
元素是空的,而且 npm 連結已損壞。
我們可以透過新增 prop 來修正它...
App
<PackageInfo
name={pkg.name}
version={pkg.version}
description={pkg.description}
website={pkg.website}
/>
...但是由於 pkg
的屬性對應到元件預期的 props,我們可以將它們「展開」到元件上。
App
<PackageInfo {...pkg} />
相反地,在
PackageInfo.svelte
中,您可以使用 rest 屬性來取得一個包含傳遞給元件的所有 props 的物件...let { name, ...stuff } = $props();
...或者完全跳過解構
let stuff = $props();
...在這種情況下,您可以使用其物件路徑存取這些屬性
console.log(stuff.name, stuff.version, stuff.description, stuff.website);
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: 'blazing fast',
website: 'https://svelte.dev.org.tw'
};
</script>
<PackageInfo
version={pkg.version}
description={pkg.description}
website={pkg.website}
/>