#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 в нужный компонент. Однако проблема здесь заключается в том, что если у вас есть вложенная структура компонентов, передача реквизитов через несколько компонентов может стать довольно запутанной.