在导入到 _layout 的组件上不会预加载 运行

Preload won't run on component imported to _layout

如果我在应用程序根目录的组件中使用预加载函数,为什么它永远不会 运行s? 来自 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>

来自 Sapper docs,

page components can have an optional preload function

preload 不会 运行 因为 someComponent.svelte 不是页面组件(即它不会响应用户导航到路由而呈现)

正如此处其他答案中所述,预加载功能似乎仅在路线上 运行。为了获得所需的效果,我可以 运行 在 onMount 函数中获取数据,或者将来自 _layout 的 api 调用的数据传递到所需的组件。然而,这里的问题是,如果你有一个嵌套的组件结构,通过多个组件传递 props 可能会变得非常混乱。