问题描述
如果我在应用程序根目录的组件中使用预加载功能,为什么它永远不会运行? 从https://github.com/sveltejs/sapper-template/issues/94中,我认为这曾经是一个错误,但已得到修复。
所以我很难理解为什么它不运行:
_layout.svelte
import someComponent from 'someComponent.svelte';
<someComponent />
someComponent.svelte
<script context="module">
export async function preload({ params,query }) {
console.log("i ran")
}
</script>
解决方法
页面组件可以具有可选的预加载功能
preload
无法运行,因为someComponent.svelte
不是页面组件(即,它不会响应用户导航到路线而呈现)
如此处其他答案中所述,似乎预加载功能仅在路由上运行。为了获得所需的效果,我可以在onMount函数中运行访存,或将api调用中的数据从_layout传递到所需的组件。但是,这里的问题是,如果您具有嵌套的组件结构,则通过多个组件向下传递props可能会变得非常混乱。