在本练习中,在 App.svelte
中,我们忘记传递 PackageInfo.svelte
期望的 name
属性,这意味着 <code>
元素为空,并且 npm 链接已断开。
我们可以通过添加属性来修复它...
App
<PackageInfo
name={pkg.name}
version={pkg.version}
description={pkg.description}
website={pkg.website}
/>
...但由于 pkg
的属性对应于组件的预期属性,因此我们可以将其“展开”到组件上。
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.js.cn'
};
</script>
<PackageInfo
version={pkg.version}
description={pkg.description}
website={pkg.website}
/>