vuex簡單介紹

2021-10-04 06:21:11 字數 4309 閱讀 4443

一、什麼是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只關心檢視層,那麼檢視的狀態如何來確定?我們知道是通過資料驅動,這裡的狀態管理可以簡單理解為管...