Als Faustregel gilt, dass die Daten nur von einer der Komponenten verwendet werden, oder es ist ein Weg, der an das Kind weitergegeben wird. Sie sollten das auf Komponentenebene haben.
Aber wenn Daten geändert werden und von mehr als zwei Komponenten zugegriffen wird, kann es in einen zentralen Status versetzt werden: das ist vuex.
vom Zitiert docs:
, wenn Sie einen mittleren bis großen SPA bauen, die Chancen sind Sie laufen in Situationen, die Sie darüber nachdenken, machen, wie man besser Zustand behandeln außerhalb Ihre Vue-Komponenten, und Vuex wird der nächste Schritt für Sie sein . Es gibt ein gutes Zitat von Dan Abramov, der Autor von Redux:
Flux Bibliotheken sind wie Brillen: Sie wissen, wann Sie sie brauchen.
Sie können auch vue-hackernews Beispiel verweisen, wo Sie lists, users sind in vuex Speicher sehen können, während Komponenten auch data während spezifisch müssen nur die Komponente.
data in Komponente:
data() {
const data = {
loading: false,
transition: 'slide-up',
displayedPage: isInitialRender ? Number(this.$store.state.route.params.page) || 1 : -1,
displayedItems: isInitialRender ? this.$store.getters.activeItems : []
}
isInitialRender = false
return data
},
state in vuex:
state: {
activeType: null,
itemsPerPage: 20,
items: {/* [id: number]: Item */},
users: {/* [id: string]: User */},
lists: {
top: [/* number */],
new: [],
show: [],
ask: [],
job: []
}
},
"wenn Daten geändert werden und den Zugriff von mehr als zwei Komponenten kann es in zentralisierten Zustand versetzt werden" <- Das ist wahrscheinlich eine gute Möglichkeit, darüber nachzudenken. 2 oder mehr Komponenten -> es geht in den Laden. – Garfonzo