1.簡單化理解
首先你要明白 vuex 的目的 就是為了 集中化的管理專案中 元件所有的 資料狀態 (state)
0. 第一步你要明白 , store 的重要性 , store 類似乙個**基站,所有的訊號和資料處理都必須 由 store 來處理 , store 其實本質也是乙個物件 , 裡面有 這 四個 必傳的 屬性 state actions mutations
1. state 是乙個 物件 ,高於任何元件層面的物件,所以任何元件可以通過 mapstate 獲取到 你想要的 state 裡面的資料 ,其中 mapstate 其實就資料分發 , 通過es6 改造 this.$store.state. 來取值
2. action 這個其實 就是 訊號源 , 你要修改 state ,就要傳送 (dispatch) action ,通知store 提交(commit) mutations ,
3. actions 寫完 ,就緊接著寫 mutations, mutation 負責 修改資料 ,接收action 傳送過來的資料 , 修改state
4. state 修改完畢後 ,vuex的響應式資料系統 會重新重新整理 元件
5. 你在元件裡面需要做的就是 傳送訊號 ,通過store , 怎麼傳送訊號呢,就是發出 action, 你可以 this.$store.dispatch('actiontype',傳遞的引數) 或者 mapactions 來 直接取到 action , 然後函式觸發
2.vuex的安裝使用
安裝:npm i vuex -s
引入:import vuex from "vuex"
注入:vue.use(vuex)
建立store
export let store = new vuex.store()
將store例項注入到初始化**中
new vue()
state : 封裝資料模型
mutation : 封裝修改資料模型方法 (必須是純函式,必須是同步函式)
getter : 對資料模型進行二次計算 (相當於store的計算屬性)
action : 封裝業務邏輯 可以是非純函式 也可以封裝非同步方法 (封裝業務邏輯)
modules : 將多個小的store組裝成大的store (用於store的拆分)
除了資料模型 其他的幾個都是可全域性訪問的 為了避免開發時命名衝突 可開啟區域性命名空間
namespaced : 值為true時開啟區域性作用域
在元件內 需要通過計算屬性將state中的資料傳遞給模板}}
呼叫mutation : this.$store.commit("name",data)
this.$store.commit("home/name",data) //開啟命名空間時
name為封裝的mutation名 data為要傳給mutation的資料 我們稱之為載荷
呼叫getter : this.$store.getters["name"]
this.$store.getters["home/name"] //開啟命名空間時
呼叫action : this.$store.dispath("name",data)
this.$store.dispath("home/name",data) //開啟命名空間時
data同樣為載荷
工具方法
mapstate mapgetters mapmutations mapactions
使用:),
...mapstate(["name"]),
...mapstate("home",["name"]),//開啟命名空間時}}
vuex的簡單使用和模組化寫法
1.新建乙個store資料夾在src目錄下 1 新建index.js import vue from vue import vuex from vuex import state from state import getters from getter import mutations from ...
cocoapods安裝和簡單使用
cocoapods 安裝 1 公升級gem sudo gem update system 2 替換ruby源頭為 源 gem sources remove gem sources a 注 檢視gem源 gem sources l 輸入後提示 current sources 即為新增 ruby成功 g...
rabbitMq安裝和簡單使用
首先要在 etc yum.repos.d 建立乙個檔案檔案的結尾必須以.repo結尾。eg rabbitmq.repo centos7中新增下面的內容 bintray rabbitmq server name bintray rabbitmq rpm baseurl gpgcheck 0 repo ...