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

问题描述

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

页面组件可以具有可选的预加载功能

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

,

如此处其他答案中所述,似乎预加载功能仅在路由上运行。为了获得所需的效果,我可以在onMount函数中运行访存,或将api调用中的数据从_layout传递到所需的组件。但是,这里的问题是,如果您具有嵌套的组件结构,则通过多个组件向下传递props可能会变得非常混乱。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...