詳解Vuex的屬性和作用
Vuex是什么?
VueX是一個(gè)專門為 Vue.js 應(yīng)用設(shè)計(jì)的狀態(tài)管理架構(gòu),統(tǒng)一管理和維護(hù)各個(gè)vue組件的可變化狀態(tài)(你可以理解成 vue 組件里的某些 data )。
vuex 可以理解為一種開發(fā)模式或框架。比如 PHP 有 thinkphp ,java 有 spring 等。
通過狀態(tài)(數(shù)據(jù)源) 集中管理驅(qū)動(dòng)組件的變化(好比 spring 的 IOC 容器對(duì) bean 進(jìn)行集中管理)。
Vuex有五個(gè)核心概念,state, getters, mutations, actions, modules。
應(yīng)用級(jí)的狀態(tài)集中放在 store 中; 改變狀態(tài)的方式是提交 mutations ,這是個(gè)同步的事物; 異步邏輯 應(yīng)該封裝在 action 中。
Cuex借鑒了 Flux、Redux、和 The Elm Architecture。與其他模式不同的是,Vuex 是專門為 Vue.js 設(shè)計(jì)的狀態(tài)管理庫,以利用 Vue.js 的細(xì)粒度數(shù)據(jù)響應(yīng)機(jī)制來進(jìn)行高效的狀態(tài)更新。
狀態(tài)管理: 簡單理解就是統(tǒng)一管理和維護(hù)各個(gè)vue組件的可變化狀態(tài)(你可以理解成vue組件里的某些data)
Vuex的5個(gè)屬性
state:單一狀態(tài)樹,用一個(gè)對(duì)象就包含了全部的應(yīng)用層級(jí)狀態(tài)。
getters:就像計(jì)算屬性一樣,getter 的返回值會(huì)根據(jù)它的依賴被緩存起來,且只有當(dāng)它的依賴值發(fā)生了改變才會(huì)被重新計(jì)算。
mutations:每個(gè)mutation都有一個(gè)字符串的事件類型 (type) 和一個(gè)回調(diào)函數(shù) (handler)。
action:action 類似于mutation,不同在于:action 提交的是mutation,而不是直接變更狀態(tài);action可以包含任意異步操作。
modules:模塊化vuex,每個(gè)模塊擁有自己的 state、mutation、action、getter、甚至是嵌套子模塊。
vuex 的 State 特性是?
1 、Vuex 就是一個(gè)倉庫,倉庫里面放了很多對(duì)象。其中 state 就是數(shù)據(jù)源存放地,對(duì)應(yīng)于與一般 Vue 對(duì)象 里面的 data。
2 、state 里面存放的數(shù)據(jù)是響應(yīng)式的,Vue 組件從 store 中讀取數(shù)據(jù),若是 store 中的數(shù)據(jù)發(fā)生改變,依賴 這個(gè)數(shù)據(jù)的組件也會(huì)發(fā)生更新。
3 、它通過 mapState 把全局的 state 和 getters 映射到當(dāng)前組件的 computed 計(jì)算屬性中。
vuex 的 Getter 特性是?
1 、getters 可以對(duì) State 進(jìn)行計(jì)算操作,它就是 Store 的計(jì)算屬性
2 、 雖然在組件內(nèi)也可以做計(jì)算屬性,但是 getters 可以在多組件之間復(fù)用
3 、 如果一個(gè)狀態(tài)只在一個(gè)組件內(nèi)使用,是可以不用 getters
vuex 的 mauation 特性是?
1、mutation是一個(gè)對(duì)象包含多個(gè)直接更新state的方法(回調(diào)函數(shù))
2、只能包含同步的代碼, 不能寫異步代碼
vuex 的 action 特性是?
1 、action 類似于 mutation ,不同在于:
2 、action 提交的是 mutation ,而不是直接變更狀態(tài)。
3 、action 可以包含任意異步操作
什么情況下應(yīng)該使用 Vuex?
雖然 Vuex 可以幫助我們管理共享狀態(tài),但也附帶了更多的概念和框架。這需要對(duì)短期和長期效益進(jìn)行權(quán)衡。
如果不打算開發(fā)大型單頁應(yīng)用,使用 Vuex 可能是繁瑣冗余的。確實(shí)是如此——如果您的應(yīng)用夠簡單,您最好不要使用 Vuex。一個(gè)簡單的global event bus就足夠您所需了。但是,如果您需要構(gòu)建是一個(gè)中大型單頁應(yīng)用,您很可能會(huì)考慮如何更好地在組件外部管理狀態(tài),Vuex 將會(huì)成為自然而然的選擇。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Vuex unknown action type報(bào)錯(cuò)問題及解決
這篇文章主要介紹了Vuex unknown action type報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
vue+高德地圖實(shí)現(xiàn)地圖搜索及點(diǎn)擊定位操作
這篇文章主要介紹了vue+高德地圖實(shí)現(xiàn)地圖搜索及點(diǎn)擊定位操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09
簡單實(shí)現(xiàn)Vue的observer和watcher
這篇文章主要教大家如何簡單實(shí)現(xiàn)Vue的observer和watcher,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
ElementPlus 自定義封裝 el-date-picker 的快捷功能示例詳解
文章討論了用戶對(duì)官網(wǎng)提供的案例不滿足快捷功能需求的情況,建議在外部自定義組件中導(dǎo)入并使用快捷內(nèi)容,以滿足用戶需求,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-12-12
詳解在vue-cli項(xiàng)目中安裝node-sass
本篇文章主要介紹了詳解在vue-cli項(xiàng)目中安裝node-sass ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06
Vue中使用vee-validate表單驗(yàn)證的方法
vee validate 一個(gè)輕量級(jí)的 vue表單驗(yàn)證插件。接下來通過本文給大家分享Vue中使用vee-validate表單驗(yàn)證的方法,需要的朋友參考下吧2018-05-05
vue打包后dist目錄下的index.html網(wǎng)頁顯示空白的問題(兩種方案)
本文主要介紹了vue打包后dist目錄下的index.html網(wǎng)頁顯示空白的問題,主要介紹了兩種方式,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11
bootstrap vue.js實(shí)現(xiàn)tab效果
這篇文章主要為大家詳細(xì)介紹了bootstrap vue.js實(shí)現(xiàn)tab效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02

