在 sveltekit 中,+page.svelte 呈现使用 +page.ts 加载函数加载的数据。
但是如果页面上有一个“更多数据...”之类的按钮来加载其他数据怎么办?
如何告诉加载函数再次运行,但使用不同的参数? 我猜这可能适用于 url 参数,但如果您不想使用这些 url 参数怎么办?
到目前为止,我所做的是将数据完全加载到 +page.svelte 中,这非常简单,因为我只保持以下状态:
const top = 10
let skip = $state(0)
let data = $state([])
async function loadData(top, skip) {
//...
data = [data..., newdata]
}
当单击按钮时,它会增加跳过并触发 loadData。
但我猜这似乎不是 Sveltekit 的方式。 我不知道如何使用这样的加载函数来做到这一点。
我还可以在 +page.svelte 中加载附加数据,但这可能会与加载函数发生冲突。我必须将加载函数中的数据与实际 +page.svelte 中加载的数据合并,如果加载函数无效,则可能会不一致。
有什么最佳实践吗?
这样的场景应该很多,初始加载的数据不够,需要稍后再加载一些数据。
我猜这可能适用于 url 参数,但如果您不想使用这些 url 参数怎么办?
如果你不想使用 URL 参数,那么你就没有实现一个合适的网站,根本不应该使用 SvelteKit,而应该使用一个为你的需求而设计的框架。 Web 的构建基础是 URL 标识屏幕上显示的资源,因此可以添加书签、将 URL 发送给朋友等等,那么您为什么不想要此功能呢?
当然,您可以使用一些解决方法来代替 URL 参数,但最佳实践是使用 URL 参数,因为要使用 Web。