在这个练习中,我们在 App.svelte
中忘记传递 PackageInfo.svelte
所需的 name
属性,这导致 <code>
元素为空且 npm 链接失效。
我们可以通过添加这个属性来修复它...
App
<PackageInfo
name={pkg.name}
version={pkg.version}
description={pkg.description}
website={pkg.website}
/>
...但是由于 pkg
的属性与组件期望的属性相对应,我们可以将它们 ‘展开(spread)’ 到组件上:
App
<PackageInfo {...pkg} />
相反,在
PackageInfo.svelte
中,你可以使用剩余属性获取一个包含所有传递给组件的属性的对象...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'
};
</script>
<PackageInfo
version={pkg.version}
description={pkg.description}
website={pkg.website}
/>