#subscription #svelte #svelte-store
Вопрос:
Просто основной вопрос: применим ли $-синтаксис для хранилищ в некомпонентных файлах JavaScript?
Док говорит:
Каждый раз, когда у вас есть ссылка на магазин, вы можете получить доступ к его значению внутри компонента, добавив к нему префикс$.
Однако в этом официальном примере, похоже, используется синтаксис $-в производном хранилище, которое не является компонентом:
export const elapsed = derived(
time,
$time => Math.round(($time - start) / 1000)
);
Это особый случай для пользовательских магазинов? Или это возможно, потому что он импортируется в компонент?
Комментарии:
1.
$time
это просто имя параметра функции, здесь не происходит никакой стройной магии.
Ответ №1:
Ответ отрицательный, потому что будут скомпилированы только стройные файлы.
И вы правы насчет производного магазина. Но это только для того, чтобы прояснить, что обратный вызов получает значение, а не подписку. Вы также можете использовать другие имена значений, и вам не нужно начинать с $.
export const elapsed = derived(
time,
_time => Math.round((_time - start) / 1000)
);
Комментарии:
1. Импорт файла JS в компонент не означает, что он также компилируется?
2. Нет. Но, конечно, вы можете использовать store.subscribe() или использовать get(store) здесь, чтобы получить текущее значение магазина. Или передайте $store в качестве аргумента функции импортированной функции js. Импортировано из файла js.