1. Vuex簡介
Vuex是一個專為Vue.js利用順序開辟的狀況管理形式跟庫。它採用會合式存儲管理當用的全部組件的狀況,並以響應的規矩保證狀況以一種可猜測的方法產生變更。Vuex的核心頭腦是將組件的共享狀況抽離出來,以全局單例形式停止管理,從而簡化組件之間的通信跟狀況管理。
2. Vuex核心不雅點
2.1 State
State是Vuex管理的核心,它是一個存儲在Vuex中的東西樹,用於存儲全部組件的共享狀況。在Vuex中,State可能是咨意範例的數據。
const store = new Vuex.Store({
state: {
count: 0
}
});
2.2 Getters
Getters類似於Vue中的打算屬性,用於從State中派生出一些狀況。Getters可能用來獲取State中的數據,或許對數據停止處理。
const store = new Vuex.Store({
state: {
count: 0
},
getters: {
doneTodosCount: (state) => {
return state.todos.filter(todo => todo.done).length;
}
}
});
2.3 Mutations
Mutations是Vuex頂用於修改State的唯一方法,它是同步的。每個Mutation都包含一個變亂範例跟一個回調函數,回調函數用於修改State。
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state, payload) {
state.count += payload;
}
}
});
2.4 Actions
Actions類似於Mutations,但它是用於處理異步操縱的。Action可能包含咨意異步邏輯,並且提交Mutation。
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state, payload) {
state.count += payload;
}
},
actions: {
incrementAsync({ commit }, payload) {
setTimeout(() => {
commit('increment', payload);
}, 1000);
}
}
});
2.5 Modules
Vuex支撐將狀況跟變革邏輯按模塊停止分別,便利管理。每個模塊擁有獨破的State、Getters、Mutations、Actions跟Modules。
const store = new Vuex.Store({
modules: {
user: {
namespaced: true,
state: {
// ...
},
getters: {
// ...
},
mutations: {
// ...
},
actions: {
// ...
}
}
}
});
3. Vuex利用實戰技能
3.1 利用插件
Vuex支撐利用插件來擴大年夜其功能。插件可能用來實現日記記錄、錯誤處理等功能。
const loggerPlugin = store => {
store.subscribe((mutation, state) => {
console.log(`mutation type: ${mutation.type}`);
console.log(`mutation payload: ${mutation.payload}`);
});
};
const store = new Vuex.Store({
// ...
plugins: [loggerPlugin]
});
3.2 利用嚴格形式
Vuex支撐利用嚴格形式來進步狀況管理的保險性。在嚴格形式下,Vuex會檢測未經由過程Mutation修改State的情況。
const store = new Vuex.Store({
// ...
strict: true
});
3.3 利用Vuex Devtools
Vuex Devtools是一個Chrome插件,可能幫助開辟者更好地懂得Vuex的狀況管理。它供給了時光遊覽調試、狀況快照導入導出等功能。
4. 總結
Vuex是Vue.js頂用於狀況管理的重要東西,它可能幫助開辟者更好地管理當用狀況,進步代碼的可保護性跟可擴大年夜性。經由過程控制Vuex的核心不雅點跟利用實戰技能,開辟者可能更高效地開辟Vue.js利用。