Junior
Erklären Sie, was Vuex ist, mit Ihren eigenen Worten.
sobes.tech KI
Antwort von AI
Vuex ist eine Zustandsverwaltungsbibliothek für Vue.js-Anwendungen. Es ist ein zentralisiertes Lager für alle Komponenten der Anwendung, in dem Daten gespeichert werden können, die aus verschiedenen Teilen der Anwendung zugänglich sein sollen, ohne sie über Props oder Ereignisse weiterzugeben.
Vuex besteht aus den folgenden Hauptteilen:
- State: Objekt, das alle gemeinsamen Daten der Anwendung enthält. Es ist die "einzige Quelle der Wahrheit".
- Getters: Funktionen zum Abrufen von Daten aus dem Zustand. Sie sind ähnlich wie berechnete Eigenschaften in Vue-Komponenten.
- Mutations: Funktionen, die den Zustand direkt ändern. Sie sind synchron. Die einzige Möglichkeit, den Zustand zu ändern, besteht darin, eine Mutation aufzurufen.
- Actions: Funktionen, die asynchrone Operationen enthalten können. Sie ändern den Zustand nicht direkt, sondern rufen Mutations auf.
- Modules: Ermöglichen die Aufteilung des Stores in Module, jedes mit eigenem State, Getters, Mutations und Actions, für große Anwendungen.
Funktionsprinzip:
- Komponenten erhalten Daten aus
stateübergetters. - Benutzeraktionen (Klicks, Eingaben) rufen
actionsauf. Actionskönnen asynchrone Operationen ausführen (z.B. API-Anfragen).Actionsrufen Mutations auf, um denstatezu ändern.- Änderungen am
stateaktualisieren die Komponenten automatisch reaktiv.
Beispiel:
Angenommen, wir haben einen Zähler, dessen Wert aus verschiedenen Komponenten zugänglich sein soll.
// store.js
import { createStore } from 'vuex';
const store = createStore({
state() {
return {
count: 0
};
},
mutations: {
increment(state) {
state.count++;
},
decrement(state) {
state.count--;
}
},
actions: {
incrementAsync({ commit }) {
setTimeout(() => {
commit('increment');
}, 1000);
}
},
getters: {
doubleCount(state) {
return state.count * 2;
}
}
});
export default store;
<!-- Component.vue -->
<template>
<div>
<p>Zähler: {{ count }}</p>
<p>Doppelter Zähler: {{ doubleCount }}</p>
<button @click="increment">Hinzufügen</button>
<button @click="decrement">Entfernen</button>
<button @click="incrementAsync">Asynchron hinzufügen</button>
</div>
</template>
<script>
import { useStore } from 'vuex';
import { computed } from 'vue';
export default {
setup() {
const store = useStore();
const count = computed(() => store.state.count);
const doubleCount = computed(() => store.getters.doubleCount);
const increment = () => store.commit('increment');
const decrement = () => store.commit('decrement');
const incrementAsync = () => store.dispatch('incrementAsync');
return {
count,
doubleCount,
increment,
decrement,
incrementAsync
};
}
};
</script>
Vuex hilft, die Zustandsverwaltung der Anwendung zu organisieren, sie vorhersehbarer zu machen und das Debuggen zu erleichtern, insbesondere in großen und komplexen Projekten.