Предварительная загрузка не будет выполняться для компонента, импортированного в _layout

#sapper

#сапер

Вопрос:

Если я использую функцию предварительной загрузки в компоненте в корне приложения, почему она никогда не запускается? Из 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>
  

Ответ №1:

Из документов сапера,

компоненты страницы могут иметь дополнительную функцию предварительной загрузки

preload не запускается, поскольку someComponent.svelte не является компонентом страницы (т. Е. Не Отображается в ответ на переход пользователя к маршруту)

Ответ №2:

Как упоминалось в другом ответе здесь, кажется, что функция предварительной загрузки выполняется только на маршрутах. Чтобы получить желаемый эффект, я мог бы либо выполнить выборку в функции onMount, либо передать данные из вызова api из _layout в нужный компонент. Однако проблема здесь заключается в том, что если у вас есть вложенная структура компонентов, передача реквизитов через несколько компонентов может стать довольно запутанной.