У меня есть приложение Svelte & Sapper, в котором я использую записываемое хранилище Svelte для настройки переменной с начальным значением пустой строки:
import { writable } from 'svelte/store';
export let dbLeaveYear = writable('');
В моем Index.svelte
файле я импортирую это, а затем вычисляю значение этой переменной и устанавливаю его (я делаю это в функции onMount
из `` Index.svelte, если это актуально):
<script>
import {dbLeaveYear} from "../stores/store.js"
function getCurrentLeaveYear() {
const today = new Date();
const currYear = today.getFullYear();
const twoDigitYear = currYear.toString().slice(-2);
const cutoffDate = `${twoDigitYear}-04-01`
const result = compareAsc(today, new Date(cutoffDate));
if (result === -1) {
$dbLeaveYear = `${parseInt(twoDigitYear, 10) - 1}${twoDigitYear}`;
} else {
$dbLeaveYear = `${twoDigitYear}${parseInt(twoDigitYear, 10) + 1}`;
}
}
onMount(() => {
getCurrentLeaveYear();
});
</script>
У меня есть дочерний компонент, отображаемый в Index.svelte
<Calendar />
Внутри дочернего компонента календаря я импортирую переменную и пытаюсь получить к ней доступ, чтобы выполнить преобразование, но я получаю сообщения об ошибке, так как она все еще пуста - похоже, она не принимает назначение от Index.svelte
:
<script>
import {dbLeaveYear} from "../stores/store.js"
const calStart = $dbLeaveYear.slice(0, 2)
</script>
Однако, если я использую значение в элементе HTML в том же дочернем компоненте Calendar с <p>{$dbLeaveYear}</p>
, оно заполняется значением из вычисления в Index.svelte
.
Как мне получить доступ к переменной store внутри тега <script>
дочернего компонента? Это вообще возможно? Я пробовал назначать onMount
, пытался назначать функцию - похоже, ничего не работает, и всегда говорится, что $dbLeaveYear
- это пустая строка.
Мне нужно, чтобы значение было динамическим, поскольку значение года отпуска может меняться.