I have a component called WastedTime.svelte with a value wastedTime. There's also a function to change the value to 50 (in my real code, this does an animation but this is a reduced test case for Stack Overflow).
To allow the child function to be called from a parent, I have used <script context="module"> per the Svelte docs:
<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>The parent calls the function in the child from onMount:
<script> import { onMount } from 'svelte'; import WastedTime, {changeNumber } from './WastedTime.svelte'; onMount(() => { changeNumber() });</script><WastedTime />The problem is that since wastedTime is referred to in <script context="module">, it can't seem to change wastedTime. The exported function runs, but wastedTime stays at 0.
I have tried: - Putting var wastedTime = 0 in <script context="module"> - Putting var wastedTime = 0 in <script>
Neither works.
How can I export a function from a Svelte component that changes a value in the component?