onErrorCaptured-livssyklus-hook
Fang opp feil fra underordnede komponenter, returner false for å stoppe propagasjon, og arbeid med feilobjekter.
onErrorCaptured-livssyklus-hook er en gratis leksjon i Vue Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Vue Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Vue Academy inneholder totalt 4 leksjoner.
Fange feil i komponenter
Vue tilbyr livssyklus-hooken onErrorCaptured for å fange feil som kastes av underordnede komponenter. Den lar en overordnet komponent fange opp feil fra sitt komponenttre.
Signaturen til hooken
onErrorCaptured mottar tre argumenter: feilen, komponentinstansen som kastet feilen, og en info-streng som beskriver hvor den oppsto.
import { onErrorCaptured } from "vue";
onErrorCaptured((err, instance, info) => {
// handle it
});err-argumentet
Det første argumentet er feilobjektet som ble kastet – vanligvis en Error-instans med en melding og en stack som du kan logge eller vise.
onErrorCaptured((err) => {
console.error("Captured:", err.message);
});instance-argumentet
Det andre argumentet er komponentinstansen som utløste feilen. Den er nyttig ved feilsøking eller når du vil legge til kontekst i rapportene dine.
onErrorCaptured((err, instance) => {
console.log("From component:", instance);
});info-argumentet
Det tredje argumentet er en streng som forteller hvilken livssyklus eller operasjon som utløste feilen – for eksempel «render-funksjonen», «setup-funksjonen» eller en bestemt hook.
onErrorCaptured((err, instance, info) => {
console.log("Vue context:", info);
});Bare feil fra underordnede komponenter
Det er viktig å merke seg at onErrorCaptured fanger feil fra underordnede komponenter, ikke fra komponentens eget setup eller render. Plasser hooken i en overordnet komponent for koden du vil beskytte.
Stoppe videreføring
Som standard videreføres en fanget feil til overordnede feilhåndterere og den globale feilhåndtereren. Returner false for å hindre at den går videre.
onErrorCaptured((err) => {
reportError(err);
return false; // do not propagate
});Hvorfor stoppe videreføringen
Når du returnerer false, begrenses feilen til dette stedet. Det er nyttig når komponenten håndterer feilen fullstendig, for eksempel ved å vise en reservevisning, og du ikke vil at den globale feilhåndtereren også skal aktiveres.
La feilen boble videre
Hvis du vil at feilhåndterere på et høyere nivå (eller den globale feilhåndtereren) også skal se feilen, skal du ikke returnere false. Hooken logger da feilen lokalt og lar den fortsette oppover.
onErrorCaptured((err) => {
logLocally(err);
// no return -> still propagates
});Et praktisk bruksområde
Et vanlig bruksområde er logging kombinert med et gjenopprettingsflagg. Sett et reaktivt flagg for å vise en reservevisning, samtidig som du rapporterer feilen for diagnostisering.
const failed = ref(false);
onErrorCaptured((err) => {
failed.value = true;
report(err);
return false;
});Forbehold for asynkron kode
onErrorCaptured fanger feil i rendering, livssyklus og synkrone handlere hos underordnede komponenter. Enkelte asynkrone feil (ikke-håndterte promise-avvisninger) håndteres bedre på globalt nivå – dette kommer vi tilbake til senere.
Kort kontrollspørsmål
Hva gjør det å returnere false fra onErrorCaptured?
Oppsummering
Du har lært at onErrorCaptured((err, instance, info)) fanger feil fra underordnede komponenter. info-strengen gir kontekst om livssyklusen, og ved å returnere false stopper du videreføringen slik at komponenten kan håndtere feilen lokalt.
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
- 42
- Leksjoner
- 156
Ofte stilte spørsmål
Er leksjonen «onErrorCaptured-livssyklus-hook» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Vue Academy, inkludert «onErrorCaptured-livssyklus-hook», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Vue Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «onErrorCaptured-livssyklus-hook»?
Fang opp feil fra underordnede komponenter, returner false for å stoppe propagasjon, og arbeid med feilobjekter. Du øver på Vue 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 Vue Academy?
Ingen tidligere erfaring er nødvendig. Vue 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 1 av 4.
Hvor lang tid tar leksjonen «onErrorCaptured-livssyklus-hook»?
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 Vue Academy-leksjonen?
Ja. Alle Vue 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
- onErrorCaptured-livssyklus-hook
- Error Boundary-komponenter
- app.config.errorHandler for globale feil
- Asynkron feilhåndtering i composables