一、什麼是vuex
vuex是vue的狀態管理模式
專案中需要共享一些資料,vux就是把這些資料集中管理起來的容器,這些資料就叫做狀態,比如乙個使用者的使用者名稱,性別,許可權等
二、vuex的核心概念
state
定義:new vuex.store( ,]}
} )在vue元件中使用:
a. 直接呼叫
this.$store.state.token
b. 通過計算屬性,直接用}或者this.token就能呼叫
computed:{
token( )
}c. 呼叫mapstate
import from 』 vuex 』
computed: )
或者…mapstate()
}getter
對state進行過濾加工,可以認為是store的計算屬性
定義:vuex.store(,
// getter作為第二個引數
donetodocount: ( state, getters ) => ,
// 讓getter返回乙個函式,來實現getter傳參,對store裡面的陣列進行查詢時非常有效
gettodobyid: state => id =>
// 使用:this.$store.getters.gettodobyid(2) // => }})
在元件中使用geters:
// 直接呼叫:
this.katex parse error: expected '}', got 'eof' at end of input: …
}// 或者直接呼叫mapdetters
import from 』 vuex 』
computed: )
// 或者mapgetters([
『donetodos』,
』 donetodoscunt 』])}
mutations
在vuex中只能通過提交mutation來修改store中的狀態,它是乙個同步的過程
定義:new vuex.store(}})
在需要多人協作的大型專案中,使用常量替代mutation事件型別:
// 新建乙個mutation-types.js
export const set_token = 』 set_token '// 設定token
// store.js
import from 』 ./mutation-types 』
new vuex.store(}})
在vue元件中使用
// 直接呼叫
this.$store.commit (』 settoken ', obj)
// 在methods裡使用mapmutatios, 就可以@click = " settoken "來呼叫
methods: )
//或者
…mapmutatioss([
』 settoken ',
』 set_token 』])}
action
通過呼叫 mutation 方法非同步的改變 state 狀態
定義:new vuex.store(
// es2015 引數結構的方式,接收第二個物件作為引數傳入
login (, obj)
// 非同步操作,例:
login (, params) = params
// 定義乙個promise
return new promise((resolve, reject) => ).then(response => = response
// 呼叫mutation
commit(『set_token』, data.token)
settoken(data.token)
// 可以在成功後傳出資料
resolve(data.loginstats)
} else
}).catch(error => )})}
// 組合 action,利用async await和dispatch來實現多action的巢狀呼叫
async actionb ()
},})
在vue元件中使用:
// 直接呼叫
this.$store.dispatch(『login』, obj)
// 呼叫 action 中的非同步操作,並處理
this.katex parse error: expected '}', got 'eof' at end of input: … => ).catch(err => )
// 在 methods 裡使用 mapactions,就可以 @click=「login(obj)」 來呼叫
import from 『vuex』
methods: )
// 或者
…mapactions([
『login』])}
modules
將 store 分割成模組,每個模組擁有自己的 state、mutation、action、getter、甚至是巢狀子模組
// 定義乙個 user.js 模組
const user =
},getters:
},mutations:
},actions: ) {}}}
export default user
// 在store.js中匯入
import vue from 『vue』
import vuex from 『vuex』
import user from 『./modules/user』 // 匯入模組user
vue.use(vuex)
export default new vuex.store(,
getters: {},
mutations: {},
actions: {},
modules:
})在vue元件中使用:
預設情況下,模組內部的 action、mutation 和 getter 是註冊在全域性命名空間的,只有state註冊在自己的模組內,呼叫需要加上模組名。呼叫的方式:
// state
computed: )
…mapgetters()
}// getters
this.sto
re.g
ette
rs.g
etus
er//
muta
tion
sthi
s.
store.getters.getuser // mutations this.
store.
gett
ers.
getu
ser/
/mut
atio
nsth
is.store.commit(『setuser』, obj)
// actions
this.$store.dispatch(『getuserinfo』, obj)
設定 namespaced: true 使模組具有更高的封裝度和復用性。
這時模組內的getter會有第四引數rootgetters,作為訪問全域性getter:
getters:
},actions: ) {}
}在元件中呼叫 commit 和 dispatch 時,需要在具體mutation和action前把模組名加上:
// mutations
this.sto
re.c
ommi
t(′u
ser/
setu
ser′
,obj
)//a
ctio
nsth
is
.store.commit('user/setuser', obj) // actions this.
store.
comm
it(′
user
/set
user
′,ob
j)//
acti
onst
his.
store.dispatch(『user/getuserinfo』, obj)
在設定 namespaced: true 子模組內想要呼叫全域性的 mutation 或者 action 時需要將 作為第三引數傳給 dispatch 或 commit:
// mutations
commit(『set_token』, obj, )
// actions
dispatch(『othermodule/getuserinfo』, obj, )
Vuex簡單介紹
vuex 是乙個專為 vue.js 應用程式開發的狀態管理模式。它採用集中式儲存管理應用的所有元件的狀態,並以相應的規則保證狀態以一種可 的方式發生變化 vuex主要有兩個作用 1 全域性資料儲存和狀態管理,vuex 的狀態儲存是響應式的。當 vue 元件從 store 中讀取狀態的時候,若 sto...
VUEX基本介紹
一 什麼是vuex?vuex是乙個專為vue.js應用程式開發的狀態管理模式。當我們構建乙個中大型的單頁面應用程式時,vuex可以更好的幫助我們在元件外部統一管理狀態。二 vuex的五個核心概念 state getters mutations actions modules 其中state和muta...
Vuex簡單入門
1.vuex是什麼?學院派 vuex是乙個專為vue.js應用程式開發的狀態管理模式 集中儲存和管理應用的所有元件狀態。理解 以上這4個詞是我們理解的關鍵。狀態 什麼是狀態,我們可以通俗的理解為資料。vue只關心檢視層,那麼檢視的狀態如何來確定?我們知道是通過資料驅動,這裡的狀態管理可以簡單理解為管...