ref vs. reactive: Wann Sie welches verwenden
Zugriff mit ref.value, automatisches Unwrapping von reactive in Templates, toRefs(), toRef() zum Destrukturieren.
ref vs. reactive: Wann Sie welches verwenden ist eine kostenlose Vue Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Vue Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Vue Academy-Kurs umfasst insgesamt 4 Lektionen.
Zwei Reaktivitätswerkzeuge
Vue bietet zwei Hauptmöglichkeiten, reaktiven Zustand zu erstellen: ref() und reactive(). Sie überschneiden sich, eignen sich aber jeweils besser für bestimmte Situationen. Wenn Sie wissen, wann Sie welches verwenden sollten, bleibt Ihr Code übersichtlich.
ref funktioniert mit jedem Wert
ref() kann alles verpacken: eine Zahl, einen String, einen booleschen Wert, ein Array oder ein Objekt. In JavaScript befindet sich der Wert in .value.
import { ref } from 'vue'
const count = ref(0)
const name = ref('Alice')
const isOpen = ref(false)
count.value++
name.value = 'Bob'ref wird im Template automatisch entpackt
Während Sie in JavaScript .value schreiben müssen, entfernt das Template bei einem Ref auf oberster Ebene automatisch die Verpackung. Daher funktioniert {{ count }} einfach so.
<!-- template -->
<p>{{ count }} - {{ name }}</p>reactive ist für Objekte gedacht
reactive() akzeptiert nur Objekte, einschließlich Arrays und Maps. Es gibt einen tief reaktiven Proxy zurück, und Sie greifen direkt auf die Eigenschaften zu — ohne .value.
import { reactive } from 'vue'
const state = reactive({
name: 'Alice',
age: 30,
hobbies: ['reading']
})
state.age = 31
state.hobbies.push('coding')reactive ist tief reaktiv
Verschachtelte Objekte und Arrays innerhalb eines reactive-Objekts sind ebenfalls reaktiv. Wenn Sie eine verschachtelte Eigenschaft verändern, werden Aktualisierungen ohne zusätzlichen Aufwand ausgelöst.
const state = reactive({ profile: { city: 'Paris' } })
state.profile.city = 'Berlin' // reactive!Die Einschränkung von reactive: Destrukturieren hebt die Reaktivität auf
Wenn Sie ein reactive-Objekt destrukturieren, werden die extrahierten Variablen zu einfachen Werten und verlieren ihre Reaktivität. Das ist der häufigste Stolperstein.
const state = reactive({ name: 'Alice' })
let { name } = state
name = 'Bob'
// state.name is still 'Alice' - reactivity lost!Die Lösung: toRefs für sicheres Destrukturieren
toRefs() wandelt jede Eigenschaft eines reaktiven Objekts in einen Ref um. Jetzt können Sie destrukturieren und die Reaktivität beibehalten, weil jedes Element ein Ref ist, das mit der Quelle verbunden bleibt.
import { reactive, toRefs } from 'vue'
const state = reactive({ name: 'Alice', age: 30 })
const { name, age } = toRefs(state)
name.value = 'Bob' // state.name is now 'Bob'toRef für eine einzelne Eigenschaft
Wenn Sie nur eine Eigenschaft als Ref benötigen, verwenden Sie toRef(state, 'key'). Sie bleibt in beide Richtungen mit dem Quellobjekt synchron.
import { reactive, toRef } from 'vue'
const state = reactive({ age: 30 })
const age = toRef(state, 'age')
age.value = 31 // state.age is now 31Eine praktische Faustregel
- Verwenden Sie
ref()für primitive Werte — Zahlen, Strings und boolesche Werte — sowie für eigenständige Werte. - Verwenden Sie
reactive()für eine Gruppe zusammengehöriger Eigenschaften, die ein Objekt bilden. - Wenn Sie ein reaktives Objekt aus einem Composable zurückgeben, verpacken Sie es in
toRefs().
ref kann auch Objekte enthalten
Sie müssen für Objekte nicht zwingend reactive verwenden. Ein ref, das ein Objekt enthält, ist ebenfalls tief reaktiv — Sie greifen lediglich über .value darauf zu. Viele Teams verwenden aus Gründen der Einheitlichkeit überall ref.
const user = ref({ name: 'Alice' })
user.value.name = 'Bob' // reactive
user.value = { name: 'Carol' } // replace whole objectÜbersichtstabelle
- ref: beliebiger Wert, benötigt
.valuein JavaScript, wird im Template automatisch entpackt und kann vollständig neu zugewiesen werden. - reactive: nur für Objekte, kein
.value, tief reaktiv, aber beim Destrukturieren problematisch und nicht neu zuweisbar. - toRefs: eine Brücke, die reaktive Eigenschaften destrukturierbar macht.
Wissenscheck
Wählen Sie das richtige Werkzeug.
Zusammenfassung
Die wichtigsten Punkte:
ref()verpackt jeden Wert und benötigt.valuein JavaScript.reactive()ist für Objekte gedacht und tief reaktiv, wird aber durch Destrukturieren beeinträchtigt.toRefs()ermöglicht es, ein reaktives Objekt sicher zu destrukturieren.- Verwenden Sie ref für primitive Werte und reactive für gruppierten Objektzustand.
Häufig gestellte Fragen
Ist die Lektion „ref vs. reactive: Wann Sie welches verwenden“ kostenlos?
Ja — der vollständige Text von „ref vs. reactive: Wann Sie welches verwenden“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Vue Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Vue Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „ref vs. reactive: Wann Sie welches verwenden“?
Zugriff mit ref.value, automatisches Unwrapping von reactive in Templates, toRefs(), toRef() zum Destrukturieren. Du übst Vue Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Vue Academy zu starten?
Keine Vorkenntnisse erforderlich. Vue Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „ref vs. reactive: Wann Sie welches verwenden“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Vue Academy-Lektion Code schreiben und ausführen?
Ja. Jede Vue Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Warum die Composition API?
- setup()-Funktion und reaktive Variablen
- ref vs. reactive: Wann Sie welches verwenden
- Computed und Watch in der Composition API