У меня есть компонент с именем WastedTime.svelte
со значением wastedTime
. Также есть функция для изменения значения на 50
(в моем реальном коде это делает анимацию, но это сокращенный тестовый случай для переполнения стека).
Чтобы позволить дочерней функции вызываться изparent, я использовал <script context="module">
для документов Svelte:
<script context="module">
var wastedTime = 0;
export function changeNumber(){
console.log('changing number')
wastedTime = 50
}
</script>
<script>
// Putting 'var wastedTime = 0' here doesn't work either
</script>
<h1>Wasted time: {wastedTime}</h1>
Родитель вызывает функцию в потомке с onMount
:
<script>
import { onMount } from 'svelte';
import WastedTime, {changeNumber } from './WastedTime.svelte';
onMount(() => {
changeNumber()
});
</script>
<WastedTime />
Проблема в том, что с wastedTime
упоминается в <script context="module">
, он не может измениться wastedTime
. Экспортируемая функция запускается, но wastedTime
остается на 0.
Копия этого на Svelte REPL
Я попытался: - Вставить var wastedTime = 0
в <script context="module">
- Вставка var wastedTime = 0
в <script>
Ни то, ни другое не работает.
Как экспортировать функцию из компонента Svelte, которая изменяет значение в компоненте?