一、什么時候使用Vuex
如果應(yīng)用比較簡單,就不需要使用Vuex,直接使用父子組件傳值及及它傳值方式即可,使用Vuex就要額外的引入vuex的框架,可能是繁瑣冗余的
如果需要構(gòu)建一個中大型單頁應(yīng)用,就可以使用vuex更好地在組件外部管理狀態(tài)
二、 Vuex 是什么?
Vuex 是一個專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。
它采用集中式存儲管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。
三、Vuex的五個核心概念
1. state: 存儲公共數(shù)據(jù)
2. mutations: 不能包含異步操作
更改 Vuex 的 store 中的狀態(tài)的唯一方法是提交 mutation
mutation的方法中有兩個參數(shù),第一個是state,第二個是參數(shù)
mutations: {
方法名(state,參數(shù)){
state.屬性 = 參數(shù)
}
}
在組件中提交mutations的方法: this.$store.commit("方法名",參數(shù))
***** state中的數(shù)據(jù)是響應(yīng)式的,數(shù)據(jù)改變,相關(guān)視圖會重新渲染
3. actions:
Action 類似于 mutation,不同在于:
Action 提交的是 mutation,而不是直接變更狀態(tài)。(action不能直接更改state數(shù)據(jù))
Action 可以包含任意異步操作。
**總結(jié)一下:
mutation不能有異步操作,而action可以有異步操作
mutation可以直接更改數(shù)據(jù),而action只能通過提交mutation,通過mutation的方法來改變數(shù)據(jù)
實際通過組件改變數(shù)據(jù)時,如果沒有異步操作,可以直接提交mutation,如果有異步操作,必須派發(fā)action,通過action提交mutation來更改數(shù)據(jù)
4. getters: 就像計算屬性一樣,getter 的返回值會根據(jù)它的依賴被緩存起來,且只有當它的依賴值發(fā)生了改變才會被重新計算
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。