onMounted och onBeforeMount
Åtkomst till DOM i onMounted, varför onBeforeMount sällan behöver användas direkt.
onMounted och onBeforeMount är en gratis lektion i Vue Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Vue Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Vue Academy innehåller totalt 4 lektioner.
Hookar kring montering
Monteringsfasen har två hookar: onBeforeMount körs precis innan DOM skapas och onMounted körs direkt efter att den har infogats. De ser likadana ut, men fyller helt olika behov.
onMounted: DOM är klar
När onMounted körs har komponentens mall renderats och finns på sidan. Template-refs pekar på riktiga element, så det är här DOM-relaterat arbete hör hemma.
<script setup>
import { ref, onMounted } from 'vue'
const box = ref(null)
onMounted(() => {
console.log(box.value.offsetWidth)
})
</script>Användningsfall: Initiera ett diagram
Bibliotek som ritar i ett DOM-element behöver att elementet finns först. Initiera dem i onMounted och skicka med ref-elementet.
<script setup>
import { ref, onMounted } from 'vue'
const canvas = ref(null)
onMounted(() => {
const ctx = canvas.value.getContext('2d')
// draw chart with ctx
})
</script>Användningsfall: DOM-mätningar
För att läsa storlekar, positioner eller scrollförskjutningar krävs en riktig DOM. onMounted är den tidigaste säkra tidpunkten för att mäta ett element.
onMounted(() => {
const rect = box.value.getBoundingClientRect()
console.log(rect.height)
})Användningsfall: Hämta initial data
Att hämta data när komponenten visas är ett klassiskt användningsområde för onMounted. Spara resultatet i en ref så att mallen uppdateras när det kommer.
<script setup>
import { ref, onMounted } from 'vue'
const posts = ref([])
onMounted(async () => {
const res = await fetch('/api/posts')
posts.value = await res.json()
})
</script>onMounted körs en gång
onMounted körs en enda gång per komponentinstans. Om komponenten avmonteras och senare skapas igen kör den nya instansen sin egen onMounted.
onBeforeMount: Precis före infogning
onBeforeMount körs efter setup men innan DOM skapas. Det reaktiva tillståndet finns, men template-refs är fortfarande null eftersom inget har renderats ännu.
<script setup>
import { onBeforeMount } from 'vue'
onBeforeMount(() => {
console.log('about to render')
})
</script>Varför onBeforeMount sällan behövs
Det mesta initieringsarbetet kan göras direkt i <script setup> (som redan körs före montering), och allt DOM-relaterat måste vänta till onMounted. Därför har onBeforeMount få praktiska användningsområden.
Ett vanligt misstag
Om ni försöker komma åt en template-ref i setup eller onBeforeMount får ni null. Elementet finns inte förrän monteringen är klar. Flytta alltid åtkomst till DOM till onMounted.
<script setup>
import { ref } from 'vue'
const input = ref(null)
console.log(input.value) // null - too early!
</script>Registrera flera hookar
Ni kan anropa onMounted flera gånger; alla callback-funktioner körs i ordning. Därför kan varje composable registrera sin egen onMounted oberoende av de andra.
onMounted(() => console.log('first'))
onMounted(() => console.log('second'))Välja mellan dem
- onMounted: DOM är tillgänglig — diagram, mätningar, fokus och datahämtning.
- onBeforeMount: hook före rendering, ingen DOM, behövs sällan.
Snabbtest
Testa era kunskaper om monteringshookar.
Sammanfattning
Sammanfattning av monteringshookar:
onMountedkörs efter att DOM har infogats — använd den för att initiera diagram, göra mätningar, sätta fokus och hämta initial data.- Den körs en gång per instans och kan registreras flera gånger.
onBeforeMountkörs före rendering utan åtkomst till DOM och behövs sällan.
Lär dig HTML med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 42
- Lektioner
- 156
Vanliga frågor
Är lektionen ”onMounted och onBeforeMount” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Vue Academy, inklusive ”onMounted och onBeforeMount”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Vue Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”onMounted och onBeforeMount”?
Åtkomst till DOM i onMounted, varför onBeforeMount sällan behöver användas direkt. Ni övar på Vue Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Vue Academy?
Du behöver inga förkunskaper. Utbildningen i Vue Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”onMounted och onBeforeMount”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Vue Academy-lektionen?
Ja. Varje Vue Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Översikt över livscykelfaser
- onMounted och onBeforeMount
- onUpdated och onBeforeUpdate
- onUnmounted och mönster för rensning