I created a REPL for a strange issue.
Steps to reproduce
Open the REPL
Open the browser console
Go on the "About" page using the link
No message in console
Now comment the line:
result = id;
And comment out the line:
// setTimeout(() => (result = id), 0);
Go on Home page
Go on About page
Now in the console you can see the message: "handleInput"
Why is this happening?
Is setTimeout
really needed?
Relevant code
- CustomSelect.svelte:
<script> import Select from 'svelte-select'; export let value = undefined; export let id = undefined; $: console.log('CustomSelect, id:', id); let result; let items = [ { value: 'one', label: 'One' }, { value: 'two', label: 'Two' }, { value: 'three', label: 'Three' }, ]; $: if (id !== undefined) { result = id; // setTimeout(() => (result = id), 0); } $: if (result != undefined) { value = { value: 'custom', label: 'Custom' } }</script><Select {value} {items} on:change on:input />