跳至主要内容

正如我们在布局数据简介中看到的,+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 其他不依赖于父级数据的数据,请先执行此操作。

在 GitHub 上编辑此页面

上一页 下一页
1
2
3
<p>if a = 1 and b = a + 1, what is a + b?</p>
<a href="/sum">show answer</a>