這兩天學習了下vuex,vuex官方解釋是狀態(tài)管理,用來統(tǒng)一管理和維護各個vue組件的可變化狀態(tài)
官方解釋說的太抽象,我來解釋下:vuex 其實就是用來管理各個頁面之間需要共同使用的對象數(shù)據(jù)
舉個例子你們就知道了:
a頁面中調(diào)用一個username屬性,并且會對這個屬性進行值修改,比如把username的值改成張山,李四,王麻子,這些操作。
這個時候有個需求就是a頁面修改的這個username屬性在b頁面也需要展示,并且值需要跟a頁面同步,
那么這個時候vuex的作用就來了,你可以把username 聲明到vuex中,然后在vuex中的進行操作,值的改變會響應到a頁面跟b頁面,這個時候數(shù)據(jù)就同步成功了。
Vuex有五個核心模塊:state、getters、mutations、actions、modules。我來分別解釋下各自的作用
一:state
state 就是用來聲明對象或者屬性的地方
二:actions
actions模塊 其實就是暴露在頁面中的方法,你在頁面中需要調(diào)用方法更改state的值,那么你就可以在actions 模塊中聲明一個方法。然后在頁面中通過 “this.$store.dispatch("updateCounnt")“ 進行調(diào)用
三:mutations
mutations是用于更改state屬性對象的模塊,state 中定義的對象屬性只能通過mutations模塊中來更改,因為state 對象只能在mutations獲取到,通過 "commit("addCount")" 來調(diào)用mutations模塊中的方法
以上三個模塊,用以下圖示例:
四:modules
modules就是用來分模塊,比如你管理的對象需要按模塊來區(qū)分,那么就可以在這里定義。比如:用戶信息模塊跟訂單模塊。如下圖:
然后再展示下模塊中user跟order是怎樣定義的:
這就是modules 的作用,目的就是模塊化
五:getters
我對getter作用的理解就是把調(diào)用this.$store.XXXX 的方式進行了一次封裝,以往在頁面調(diào)用vuex中的某個屬性的時候一般都是用 “this.$store.XXXX” 來調(diào)用。這種方式調(diào)用的話在代碼上比較冗余,如果我要獲取5,10個屬性的話,你得寫10個this.$store.XXXX了,那很明顯不合適。getter 就是用來解決這個問題的
如圖:
vue頁面中的調(diào)用方式:
到這里Vuex的講解已經(jīng)結束了,其實Vuex的邏輯很簡單,使用起來非常強大,動手寫一遍就明明白白了。