正如我们在布局数据简介中看到的,+page.svelte
和 +layout.svelte
组件可以访问其父级 load
函数返回的所有内容。
有时,load
函数本身需要访问其父级的数据。这可以通过 await parent()
来实现。
为了展示其工作原理,我们将对来自不同 load
函数的两个数字求和。首先,从 src/routes/+layout.server.js
返回一些数据
src/routes/+layout.server
export function load() {
return { a: 1 };
}
然后,在 src/routes/sum/+layout.js
中获取该数据
src/routes/sum/+layout
export async function load({ parent }) {
const { a } = await parent();
return { b: a + 1 };
}
请注意,通用
load
函数可以从父级 服务器load
函数获取数据。反之则不成立——服务器加载函数只能从另一个服务器加载函数获取父级数据。
最后,在 src/routes/sum/+page.js
中,从两个 load
函数获取父级数据
src/routes/sum/+page
export async function load({ parent }) {
const { a, b } = await parent();
return { c: a + b };
}
在使用
await parent()
时,注意不要引入瀑布效应。如果可以fetch
其他不依赖于父级数据的数据,请先执行此操作。
1
2
3
<p>if a = 1 and b = a + 1, what is a + b?</p>
<a href="/sum">show answer</a>