在 vue 的單頁面應用中使用,需要使用vue.use(vuex)呼叫外掛程式。
使用非常簡單,只需要將其注入到vue根例項中。
import vuex from
'vuex'
vue.
use(vuex)
const store =
newvuex.store(,
getter:},
mutations:},
actions:}}
)// 注入到根例項
newvue
()
然後改變狀態:
this
.$store.
commit
('increment'
)
state:包含了store中儲存的各個狀態。
getter: 類似於 vue 中的計算屬性,根據其他 getter 或 state 計算返回值。
mutation: 一組方法,是改變store中狀態的執行者。
action: 一組方法,其中可以含有非同步操作。
vuex 使用 state來儲存應用中需要共享的狀態。為了能讓 vue 元件在 state更改後也隨著更改,需要基於state建立計算屬性。
const counter =}`
, computed:
}}
類似於 vue 中的 計算屬性,可以在所以來的其他 state或者 getter改變後自動改變。
每個getter方法接受 state和其他getters作為前兩個引數。
getters:
}
前面兩個都是狀態值本身,mutations才是改變狀態的執行者。mutations用於同步地更改狀態
// ...
mutations:
}
其中,第乙個引數是state,後面的其他引數是發起mutation時傳入的引數。
this
.$store.
commit
('increment',10
)
commit方法的第乙個引數是要發起的mutation名稱,後面的引數均當做額外資料傳入mutation定義的方法中。
規範的發起mutation的方式如下:
store.
commit
()
額外的引數會封裝進乙個物件,作為第二個引數傳入mutation定義的方法中。
mutations:
}
想要非同步地更改狀態,需要使用action。action並不直接改變state,而是發起mutation。
actions:),
1000)}
}
發起action的方法形式和發起mutation一樣,只是換了個名字dispatch。
// 以物件形式分發
store.
dispatch
()
想要使用action處理非同步工作很簡單,只需要將非同步操作放到action中執行(如上面**中的settimeout)。
要想在非同步操作完成後繼續進行相應的流程操作,有兩種方式:
action返回乙個 promise。
而dispatch方法的本質也就是返回相應的action的執行結果。所以dispatch也返回乙個promise。
store.
dispatch
('actiona').
then((
)=>
)
利用async/await。**更加簡潔。
// 假設 getdata() 和 getotherdata() 返回的是 promise
actions:),
async
actionb()
}
將state和getter結合進元件需要使用計算屬性:
computed:
}
將mutation和action結合進元件需要在methods中呼叫this.sto
re.c
ommi
t()或
者thi
s.
store.commit()或者this.
store.
comm
it()
或者th
is.store.commit():
methods:
,changedateasync()
}
為了簡便起見,vuex 提供了四個方法用來方便的將這些功能結合進元件。
mapstate
mapgetters
mapmutations
mapactions
示例**:
import
from
'vuex'
// ....
computed:
,...
mapstate(}
),...mapgetters(}
)}methods:),
...mapactions()
}
如果結合進元件之後不想改變名字,可以直接使用陣列的方式。
methods:
將 store分割為模組。
可以將應用的store分割為小模組,每個模組也都擁有所有的東西:state, getters, mutations, actions。
首先建立子模組的檔案:
// initial state
const state =
// getters
const getters =
// actions
const actions =
, products)
}// mutations
const mutations =)}
export
default
然後在總模組中引入:
import vuex from
'vuex'
import products from
'./modules/products'
//引入子模組
vue.
use(vuex)
export
default
newvuex.store(}
)
其實還存在命名空間的概念,大型應用會使用。需要時檢視文件即可。vuex的基本使用大致如此。 Vuex基本使用的總結
vuex 背後的基本思想 把元件的共享狀態抽取出來,以乙個全域性單例模式管理,在這種模式下,我們的元件樹構成了乙個巨大的 檢視 不管在樹的哪個位置,任何元件都能獲取狀態或者觸發行為!另外,通過定義和隔離狀態管理中的各種概念並強制遵守一定的規則,我們的 將會變得更結構化且易維護。特點 vuex 的狀態...
vuex基本使用
使用vuex 1.安裝vuex,搭建手腳架 npm i vuex s2.建立乙個store資料夾,在該資料夾中建立乙個index.js檔案 2.1引入相應的檔案 import vue from vue import vuex from vuex 2.2使用vuex vue.use vuex 3.建立...
vuex基本使用
1.首先要在store index.js檔案配置vuex vuex基本有state 用來定義共享狀態,actions 實現非同步請求操作,mutations 存放了所有更改狀態的方法,getters 類似於計算屬性,根據vuex的state狀態派發乙個新的狀態出來.自己封裝的ajax請求 vue.u...