vuex 是乙個專為 vue.js 應用程式開發的狀態管理庫,用於儲存用用程式的狀態,即資訊或資料,使得vuex使應用程式的所有元件可以共享資料。每乙個 vuex 應用的核心就是 store(倉庫),包含著你的應用中大部分的狀態 ( state ),改變 store 中的狀態的唯一途徑就是顯式地提交 (commit) mutation。
state:定義了應用程式的資料,可以設定預設的初始狀態。
getters:允許元件從 store 中獲取資料 。
mutations:是唯一更改 store 中狀態的方法,且必須是同步函式。但不可以直接呼叫mutation,必須使用commit函式來告訴vuex更新儲存並提交更改。
actions:執行非同步操作來訪問狀態,但也不可以直接呼叫action,必須使用dispatch函式來執行。
**演示:
const store =
newvuex.store(,
//使用getter來返回狀態
getters:
,count
(state)},
//可以理解為其他語言中的setter,改變狀態的值,此處為把傳進來的引數step累加到count中
mutations:},
//模擬伺服器延遲1秒
//通過commit呼叫來觸發mutations物件中的increment方法,並把引數step傳遞給increment
actions:
,1000);
}},}
);//建立vue例項
let vm =
newvue
(//通過計算屬性來返回getters中的count
counter()
},methods:}}
);<
/script>
vuex為我們提供了一些輔助工具,如mapstates,mapgetters,mapmutations,mapactions,從而來減少繁雜的工作量。
對於使用mapstates,mapgetters,可以把所有的state,getter新增到計算屬性中,而不用向上面**那樣逐個新增。
在使用這些助手時,必須引入。拿mapgetters舉例,其他類似。
import
from
'vuex'
;
**演示:
computed:
,...mapgetters
}
對於mapmutations,mapactions,可以在methods屬性中使用,把多個mutation和action對映到應用程式。
**演示:
methods:
**演示:
methods:
當應用程式很大時,需要劃分模組,vuex.store例項中將增加mudules物件。
把state,getter,mutation,action物件建立在乙個單獨的***.js檔案中,***.js在modules目錄下。
**演示:
const state =};
const getters =
;const actions =};
const mutations =};
//匯出以上四個物件
export
default
使用模組,在yyy.js檔案中引入模組,yyy.js在store目錄下。
**演示:
import vue from
'vue'
;impoet vuex from
'vuex'
;import *** from
'./modules/***'
;vue.
use(vuex)
;export
const store =
newvuex.store(}
);
另外,由於vuex中所有內容共享相同的全域性命名空間,當在兩個不同檔案中分別命名相同的state或getter或mutation或action,就會發生衝突,報錯duplicate getter key。
可以在vuex.store檔案頂部設定namespaced:true,用於分解每個命名空間的模組。
Vuex教程第五講 Vuex的小助手 05
先說兩句 前面已經講完了 vuex 下的 state getter mutation 及 action 這四駕馬車,不知道大家是否已經理解。當然,要想真正熟練掌握的話,還是需要不斷的練習和動手實踐才行。其實只要把這四駕馬車完全熟練駕馭了,那麼應對一些中小型的專案,基本上就已經沒啥問題了,後面的 mo...
Vuex分模組開發
首先在src目錄下新建資料夾store 在store資料夾下 新建乙個model資料夾用來管理vuex模組檔案,新建乙個index.js用來合併模組,一起匯出 結構如下 開啟lable.js,編寫模組 格式如下 const state const getters const mutations co...
Vuex中的模組
如果使用子模組中的state 就要寫 this.store.state.模組名.子模組的屬性 如果是子模組中的getter this.store.getter.getter屬性名 根模組中的getter有兩個引數 state,getter 子模組中的getter可以有三個引數分別是 state,ge...