新聞中心
Vuex 是 Vue.js 的官方狀態(tài)管理庫(kù),用于在 Vue.js 應(yīng)用程序中集中管理組件的狀態(tài),它提供了一個(gè)全局狀態(tài)存儲(chǔ),使得不同組件之間能夠共享和通信數(shù)據(jù)。

1. 核心概念
Vuex 的核心概念包括:
State: 存儲(chǔ)所有組件共享的數(shù)據(jù)對(duì)象。
Getters: 用于獲取 State 中的數(shù)據(jù),可以對(duì)數(shù)據(jù)進(jìn)行處理和過(guò)濾。
Mutations: 用于修改 State 中的數(shù)據(jù),必須是同步函數(shù)。
Actions: 用于提交 Mutations,可以包含異步操作。
2. State
State 是 Vuex 中最重要的部分,它是一個(gè)對(duì)象,用于存儲(chǔ)整個(gè)應(yīng)用程序的狀態(tài),可以在任何組件中通過(guò) this.$store.state 訪問(wèn)到 State。
示例:
const state = {
count: 0,
message: 'Hello, Vuex!'
};
3. Getters
Getters 用于從 State 中派生出一些狀態(tài),類似于計(jì)算屬性,可以通過(guò) this.$store.getters 訪問(wèn)到 Getters。
示例:
const getters = {
doubleCount: state => {
return state.count * 2;
},
uppercaseMessage: state => {
return state.message.toUpperCase();
}
};
4. Mutations
Mutations 用于修改 State,必須是同步函數(shù),每個(gè) Mutation 都有一個(gè)字符串類型的事件類型和一個(gè)回調(diào)函數(shù),回調(diào)函數(shù)接收 State 作為第一個(gè)參數(shù),可以通過(guò) this.$store.commit 方法觸發(fā)一個(gè) Mutation。
示例:
const mutations = {
increment(state) {
state.count++;
},
setMessage(state, newMessage) {
state.message = newMessage;
}
};
5. Actions
Actions 用于提交 Mutations,可以包含異步操作,每個(gè) Action 都是一個(gè)對(duì)象,包含一個(gè)字符串類型的事件類型、一個(gè)處理函數(shù)和一個(gè)載荷(payload),處理函數(shù)接收與 Mutations 相同的 State 作為第一個(gè)參數(shù),載荷可以是任何需要傳遞給處理函數(shù)的數(shù)據(jù),可以通過(guò) this.$store.dispatch 方法觸發(fā)一個(gè) Action。
示例:
const actions = {
updateCount({ commit }, newCount) {
setTimeout(() => {
commit('increment', newCount);
}, 1000);
},
setMessage({ commit }, newMessage) {
commit('setMessage', newMessage);
}
};
相關(guān)問(wèn)題與解答:
1、Q: Mutations 必須是同步函數(shù),那如何進(jìn)行異步操作呢?
A: 如果需要進(jìn)行異步操作,可以使用 Actions,在 Actions 中可以進(jìn)行異步操作,并在操作完成后通過(guò)提交 Mutations 來(lái)修改 State,這樣可以保持 Mutations 的純凈性。
2、Q: Getters 和 Mutations 有什么區(qū)別?
A: Getters 用于從 State 中派生出一些狀態(tài),類似于計(jì)算屬性,而 Mutations 用于直接修改 State,Getters 是無(wú)副作用的純函數(shù),而 Mutations 是有副作用的函數(shù),因?yàn)樗鼈冎苯有薷牧?State。
當(dāng)前文章:vuex狀態(tài)管理幾種狀態(tài)
分享路徑:http://m.fisionsoft.com.cn/article/ccsdsph.html


咨詢
建站咨詢
