Vue預習篇(十)vuex

2021-10-24 02:12:02 字數 3061 閱讀 3124

vuex

安裝

vue add vuex

起始

state

將應用全域性狀態定義在state中

state:

mutation

修改state只能通過mutation

mutations:

,logout

(state)

}

獲取和修改狀態

使用store.state獲取狀態

@click

="login"

v-if

="!store.state.islogin"

>

登入button

>

@click

="logout"

v-else

>

登出button

>

修改狀態只能通過store.dispatch(mutation)

this

.$s-tore.

commit

('login'

)this

.$store.

commit

('logout'

)

action

action類似於mutation,不同在於:

login

(, username)

else},

1000)}

)}

派發動作

this

.$store.

dispatch

('login'

,'admin').

then((

)=>).

catch((

)=>

)

最佳實踐

模組化

使用modules定義多個子模組利於元件複雜狀態

import user from

'./user'

export

default

newvuex.store(}

)

移動先前登入狀態相關**到user.js

export

default

訪問方式響應變化

// login.vue

"login" v-if=

"!$store.state.user.islogin"

>登入<

/button>

this

.$store.

dispatch

('user/login'

,'admin').

then((

)=>).

catch((

)=>

)

mapstate()/mapmutation()/mapaction()
import

from

'vuex'

computed:

@click

="login"

v-if

="!islogin"

>

登入button

>

action相關修改

import

from

'vuex'

methods:

,...

mapactions([

'user/login'

,'user/logout'])

}

getter

可以使用getters從store的state中派生出一些狀態

export

default

, mutations:},

getters:},

actions:

, username)

else},

1000)}

)}}}

嚴格模式

嚴格模式下,無論何時發生了狀態變更且不是由mutation函式引起的,將會丟擲錯誤,這能保證所有的狀態變更都能被除錯工具跟蹤到。開啟嚴格模式strict: true

const store =

newvuex.store

()

外掛程式

vuex的store接收plugins選項,這個選項暴露出每次mutation的鉤子。vuex外掛程式就是乙個函式,它接收store作為唯一引數:

const

myplugin

= store =>

註冊外掛程式:

const store =

newvuex.store

()

範例:實現登入狀態持久化,store/plugins/persist.js

export

default store =>

}// 使用者狀態發生變化時快取之

store.

subscribe

(muation, state)

=>

else

if(mutation.type ===

'user/logout')}

}

Vue 框架學習 十 Vuex

自己實現變數共享可以通過vue.prototype.shareobj shareobj 來實現,但不是響應式 狀態更新 同步方法 mutations 非同步操作 actions getters 模組劃分 modules view code 乙個專案使用乙個store物件來儲存所有的資訊,形成單個資料...

Vue知識點總結(VUEX篇)

vuex 是什麼?運用到了js設計模式中的單例模式,單例模式想要做到的是,不管我們嘗試去建立多少次,它都只給你返回第一次所建立的那唯一的乙個例項。vuex 使用單一狀態樹,用乙個物件就包含了全部的應用層級狀態。至此它便作為乙個 唯一資料來源 ssot 而存在。這也意味著,每個應用將僅僅包含乙個 st...

vuex的5個屬性的用法 vue篇

建立vuex.js 配置依賴 import vue from vue import vuex from vuex vue.use vuex exoprt var store default newvuex.store 定義屬性值 mutations 設定方法函式,注意 mutations不能有非同步...