Båda skapar reaktiv tillstånd i Composition API, men de fungerar olika. ref omsluter vilket värde som helst (inklusive primitiver) i en reaktiv behållare; reactive gör ett objekt djupt reaktivt direkt.
Båda skapar reaktiv tillstånd i Composition API, men de fungerar olika. ref omsluter vilket värde som helst (inklusive primitiver) i en reaktiv behållare; reactive gör ett objekt djupt reaktivt direkt.
<script setup>
import { ref } from "vue";
const count = ref(0); // wraps a primitive
const user = ref({ name: "Ann" });
function inc() {
count.value++; // ⚠️ in SCRIPT you must use .value
user.value.name = "Bob";
}
</script>
<template>
<p>{{ count }}</p> <!-- ✅ in TEMPLATE, .value is auto-unwrapped -->
</template>
En viktig särhet: i JavaScript får du åtkomst till en ref genom .value; i mallen packar Vue upp det automatiskt. Att glömma .value i script är det vanligaste nybörjarmisstaget.
<script setup>
import { reactive } from "vue";
const state = reactive({ count: 0, user: { name: "Ann" } });
state.count++; // ✅ access directly, no .value
state.user.name = "Bob"; // deeply reactive
</script>
reactive fungerar endast på objekt/arrayer (inte primitiver) och du använder egenskaperna direkt.
let state = reactive({ count: 0 });
state = { count: 5 }; // ❌ breaks reactivity (lost the reactive proxy)
const { count } = state; // ❌ destructuring loses reactivity
Om du tilldelar ett reactive-objekt på nytt eller destrukturerar dess egenskaper kopplas de från reaktiviteten — en vanlig gotcha. ref har inte det här problemet (du tilldelar .value på nytt).
ref → primitives, and the recommended default (works for everything, easy to reassign)
reactive→ when you want a grouped object of state without .value (but mind destructuring)
Många team standardiserar på ref överallt för konsistens.
ref och reactive är grunden för Vue 3:s Composition API-tillstånd.
Att förstå att ref behöver .value i script (automatiskt utpakkat i mallar) och att reactive förlorar reaktivitet vid omtilldelning/destrukturering förhindrar de två vanligaste reaktivitetsfelen i Vue.
Ett bibliotek med IT-intervjufrågor och detaljerade svar — från Junior till Senior.
Donera