Unngå foreldede closures
Forstå når closures fanger opp gamle verdier, og hvordan De kan forhindre feil.
Unngå foreldede closures er en gratis leksjon i Sveltejs Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Sveltejs Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Sveltejs Academy inneholder totalt 4 leksjoner.
Hva er en closure
En closure tar med seg variabler fra det omsluttende scopet. Verdiene den ser, er verdiene da den ble opprettet.
Utdaterte innfangede verdier
Hvis De oppretter en funksjon som tar med seg en variabel, er det ikke sikkert at senere endringer i variabelen blir synlige inne i funksjonen.
Svelte-spesifikke forhold
Reaktive variabler oppdateres ved tilordning. Et innfanget øyeblikksbilde oppdateres IKKE automatisk.
Eksempel på et problem
Et intervall som startes i onMount, kan logge den opprinnelige telleren i stedet for den gjeldende.
onMount(() => setInterval(() => console.log(count), 1000));Løsninger: Les på nytt
Bruk en funksjon som leser den nyeste verdien på nytt ved hvert tidsintervall.
onMount(() => setInterval(() => console.log(getCount()), 1000));Løsninger: Stores
Les fra en store med get(store) for alltid å få den nyeste verdien.
Reaktiv setning
Start intervallet på nytt med en reaktiv setning når avhengighetene endres, slik at nye verdier fanges inn.
Rydd opp grundig
Hvis De glemmer å fjerne intervaller, lekker tilstanden mellom renderingene. Koble hvert setInterval sammen med clearInterval.
Asynkrone fallgruver
Lange await-uttrykk inne i en funksjon fanger tilstanden på tidspunktet await utføres. Endringer mellom await-uttrykkene blir ikke synlige.
Hjelp fra TypeScript
Strict mode og linterregler kan markere closures som potensielt inneholder utdaterte verdier.
Testing av utdaterte feil
Skriv tester som oppdaterer tilstanden og deretter utløser innfangede callback-funksjoner, slik at utdaterte verdier avdekkes.
Rask sjekk
Hvordan unngår De utdaterte closures med en store?
Oppsummering
Closures fanger referanser. I langvarige callback-funksjoner bør De foretrekke stores eller hjelpefunksjoner som leser verdier på nytt, for å unngå utdaterte verdier.
Lær deg HTML med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 41
- Leksjoner
- 163
Ofte stilte spørsmål
Er leksjonen «Unngå foreldede closures» gratis?
Ja – hele teksten i «Unngå foreldede closures» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Sveltejs Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Sveltejs Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Unngå foreldede closures»?
Forstå når closures fanger opp gamle verdier, og hvordan De kan forhindre feil. Du øver på Sveltejs Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Sveltejs Academy?
Ingen tidligere erfaring er nødvendig. Sveltejs Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Unngå foreldede closures»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Sveltejs Academy-leksjonen?
Ja. Alle Sveltejs Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Reaktive setninger: $:-blokk
- Reaktive avhengigheter og rekkefølge
- Når bør De bruke stores i stedet for lokal tilstand
- Unngå foreldede closures