Hola chicos, he creado en Svelte un componente, que debería eliminarse después de un tiempo.
<script> export let time; </script> <div class="notif"> </div> <style> </style>¿Cómo archivaría eso?
De https://github.com/sveltejs/svelte/issues/3089
La diferencia en Svelte 3 es que los componentes no se pueden autodestruir; no hay un equivalente de this.destroy(). Si un componente no puede destruirse a sí mismo, eso implica que algún padre o controlador debe destruirlo...
Para destruir el componente, se puede usar un bloque {#if} o llamar al component.$destroy()
Un REPL con los ejemplos
<script> import Comp1 from './Comp1.svelte' import Comp2 from './Comp2.svelte' let showComp = true let compRef </script> {#if showComp} <Comp1 bind:showComp time={1500} /> {/if} <Comp2 bind:this={compRef} self={compRef} time={1500}/> <script> import {onDestroy} from 'svelte' export let showComp, time setTimeout(() => { showComp = false }, time) onDestroy(() => { console.log('successfully destroyed Comp1') }) </script> COMP 1 <script> import {onDestroy} from 'svelte' export let self, time setTimeout(() => { self.$destroy() }, time) onDestroy(() => { console.log('successfully destroyed Comp2') }) </script> COMP 2