在上篇中,我們可以知道如果想要訪問vuex.store中state中的資料,需要this.$store.state.屬性名。顯然這樣訪問資料寫的**很很不簡潔的,輔助函式就是用來解決這個問題的。
1、輔助函式:
通過輔助函式mapstate、mapactions、mapmutations,把vuex.store中的屬性對映到vue例項身上,這樣在vue例項中就能訪問vuex.store中的屬性了,對於操作vuex.store就很方便了。
state輔助函式為mapstate,actions輔助函式為mapactions,mutations輔助函式為mapmutations。(vuex例項身上有mapstate、mapactions、mapmutations屬性,屬性值都是函式)
2、如何使用輔助函式
在當前元件中引入vuex
通過vuex來呼叫輔助函式
3、輔助函式如何去對映vuex.store中的屬性
1、mapstate:把state屬性對映到computed身上
computed:)}
屬性1:state:2、mapacions:把actions裡面的方法對映到methods中用來儲存公共的狀態 在state中的資料都是響應式的。
響應式原因:state裡面有乙個getters、setters方法;data中的資料也是響應式的,因為裡面也有getters和setters方法
輔助函式
mapstate
1、在computed屬性中來接收state中的資料 接收方式有2種(陣列和物件,推薦物件)
computed:vuex.mapstate(["屬性"]) 把state中的資料通過mapstate對映到computed元件身上
computed:vuex.mapstate()
2、如果自身元件也需要使用computed的話,通過解構賦值去解構出來
computed:)
}
methods:)}//直接代用add和change方法就行,不過要記得在actions裡面做完資料業務邏輯的操作
之前我們還需要這樣寫一大串函式呼叫,// methods: ,
// handleadd()
// }
屬性2:actions:3、mapmutations:把mutations裡面的方法對映到methods中只是做簡單的資料修改(例如n++),它沒有涉及到資料的處理,沒有用到業務邏輯或者非同步函式,可以直接呼叫mutations裡的方法修改資料。actions裡面的函式主要用來處理非同步的函式以及一些業務邏輯,每乙個函式裡面都有乙個形參 這個形參是乙個物件
裡面有乙個commit方法,這個方法用來觸發mutations裡面的方法
輔助函式
mapactions
使用方式
methods:vuex.mapactions([""])
methods:)
}
methods:)}
屬性3:mutations:理解state、actions、mutations,可以參考mvc框架。state可以比喻成乙個資料庫,知識它是響應式的,重新整理頁面資料就會改變;actions比喻成controller層,做資料的業務邏輯;mutations比喻成model層,做資料的增刪改查操作。mutations裡面的函式主要用來修改state中的資料。mutations裡面的所以方法都會有2個引數 乙個是store中的state
另外乙個是需要傳遞的引數
輔助函式
mapmutations
使用方式
methods:vuex.mapmutations([""])
methods:)
}
4、mapgetters:把getters屬性對映到computed身上
computed:)}
屬性4:getters:計算屬性5、modules屬性: 模組 (和輔助函式沒關係了)getters類似於元件裡面computed同時也是監聽屬性的變化,當state中的屬性發生改變的時候就會
觸發getters裡面的方法。getters裡面的每乙個方法中都會有乙個引數 state
使用方式
this
.$store.getters.方法名稱
輔助函式
mapgetters
mapgetters使用在元件的computed中
1、vuex.mapgetters(["方法名稱"])
vuex.mapgetters()
把公共的狀態按照模組進行劃分
1、每個模組都相當於乙個小型的vuex
2、每個模組裡面都會有state getters actions mutations
3、切記在匯出模組的時候 加乙個 namespaced:true 主要的作用是將每個模組都有獨立命名空間
4、namespace:true
在多人協作開發的時候,由於個人單詞量有限,可能子模組和主模組中的函式名字會相同,這樣嗲用函式的時候,相同名字的函式都會被呼叫,就會發生問題。
為了解決這個問題,上面提到了匯出模組的時候要加namespace:true.
那麼怎麼呼叫子模組中的函式呢?假如我的子模組名字為todo.js。 函式名字就改成todo/函式名字。
為什麼這樣寫呼叫,輸出模組後的store例項
也可以看到模組化後,store例項的state屬性的訪問改變了,this.$store.state.todo.inputval
可以簡單總結一下輔助函式通過vuex使用,比喻成對映關係為: mapstate/mapgettes--->computed ; mapacions/mapmutations---->methods
Vuex5個狀態詳解
本篇文章適合對vuecli和vuex稍微有一定了解的小夥伴,我將 拆分解釋和整合,希望可以幫助到你 安裝npm i s vuex使用 1.腳手架src中新建store資料夾,再建乙個index.js入口檔案 import vue from vue 匯入vue import vuex from vue...
vuex輔助函式的使用
vuex是vue的公共狀態管理,vuex核心的概念有五個,state,mutation,action,getter,module.1.state 所有的資料都儲存在state中 state是乙個物件 2 mutations 可以直接操作state中的資料 3 actions 只能呼叫mutation...
Vuex中的輔助函式
上篇文章我們講了vuex的使用,本來想把是想把vuex內容寫一塊,後來覺得那樣會太亂不利於入門的同學消化理解,vuex的使用問題請看上篇,本篇只講輔助函式。一 元件訪問state 從 vuex 中匯入 mapstate 函式 import from vuex 對映為當前元件的computed計算屬性...