vuex幾大模組和Vuex助手使用詳解

2021-10-06 05:02:03 字數 2199 閱讀 6423

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...