400-650-7353
您所在的位置:首頁(yè) > IT干貨資料 > web前端 > 【W(wǎng)eb前端基礎(chǔ)知識(shí)】Vuex狀態(tài)管理

【W(wǎng)eb前端基礎(chǔ)知識(shí)】Vuex狀態(tài)管理

  • 來(lái)源:
  • 2021-08-30 17:10:05
  • 閱讀()
  • 分享
  • 手機(jī)端入口

一、Vuex是什么

  Vuex是專(zhuān)門(mén)為Vuejs應(yīng)用程序設(shè)計(jì)的狀態(tài)管理工具。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化。是狀態(tài)管理,在main.js引入store,注入。只用來(lái)讀取的狀態(tài)集中放在store中; 改變狀態(tài)的方式是提交mutations,這是個(gè)同步的事物; 異步邏輯應(yīng)該封裝在action中。Vuex可以理解為一種開(kāi)發(fā)模式或框架,通過(guò)狀態(tài)集中管理驅(qū)動(dòng)組件的變化,應(yīng)用級(jí)的狀態(tài)集中放在store中,改變狀態(tài)的方式是提交mutations,異步邏輯封裝在action中。

應(yīng)用場(chǎng)景有:?jiǎn)雾?yè)應(yīng)用中,組件之間的狀態(tài)、音樂(lè)播放、登錄狀態(tài)、加入購(gòu)物車(chē)vuex是一種集中式狀態(tài)管理模式,它按照一定的規(guī)則管理狀態(tài),保證狀態(tài)的變化是可預(yù)測(cè)的。

1、Vuex的構(gòu)成

  由上圖,我們可以看出Vuex有以下幾個(gè)部分構(gòu)成:

1)state

state是存儲(chǔ)的單一狀態(tài),是存儲(chǔ)的基本數(shù)據(jù)。

2)Getters

getters是store的計(jì)算屬性,對(duì)state的加工,是派生出來(lái)的數(shù)據(jù)。就像computed計(jì)算屬性一樣,getter返回的值會(huì)根據(jù)它的依賴(lài)被緩存起來(lái),且只有當(dāng)它的依賴(lài)值發(fā)生改變才會(huì)被重新計(jì)算。

3)Mutations

mutations提交更改數(shù)據(jù),使用store.commit方法更改state存儲(chǔ)的狀態(tài)。(mutations同步函數(shù))

4)Actions

actions像一個(gè)裝飾器,提交mutation,而不是直接變更狀態(tài)。(actions可以包含任何異步操作)

5)Module

Module是store分割的模塊,每個(gè)模塊擁有自己的state、getters、mutations、actions。

  1. const moduleA = { 
  2.   state: { ... }, 
  3.   mutations: { ... }, 
  4.   actions: { ... }, 
  5.   getters: { ... } 
  6.  
  7. const moduleB = { 
  8.   state: { ... }, 
  9.   mutations: { ... }, 
  10.   actions: { ... } 
  11.  
  12. const store = new Vuex.Store({ 
  13.   modules: { 
  14.     a: moduleA, 
  15.     b: moduleB 
  16.   } 
  17. }) 
  18.  
  19. store.state.a // -> moduleA 的狀態(tài) 
  20. store.state.b // -> moduleB 的狀態(tài) 

6)輔助函數(shù)

Vuex提供了mapState、MapGetters、MapActions、mapMutations等輔助函數(shù)給開(kāi)發(fā)在vm中處理store。

二、Vuex的設(shè)計(jì)思想

  Vuex的設(shè)計(jì)思想,借鑒了Flux、Redux,將數(shù)據(jù)存放到全局的store,再將store掛載到每個(gè)vue實(shí)例組件中,利用Vue.js的細(xì)粒度數(shù)據(jù)響應(yīng)機(jī)制來(lái)進(jìn)行高效的狀態(tài)更新。

小結(jié)

  Vuex是通過(guò)全局注入store對(duì)象,來(lái)實(shí)現(xiàn)組件間的狀態(tài)共享。在大型復(fù)雜的項(xiàng)目中(多級(jí)組件嵌套),需要實(shí)現(xiàn)一個(gè)組件更改某個(gè)數(shù)據(jù),多個(gè)組件自動(dòng)獲取更改后的數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯處理,這時(shí)候使用vuex比較合適。假如只是多個(gè)組件間傳遞數(shù)據(jù),使用vuex未免有點(diǎn)大材小用,其實(shí)只用使用組件間常用的通信方法即可。

Vue組件簡(jiǎn)單常用的通信方式有以下幾種:

1、父子通信:

父向子傳值,通過(guò)props;子向父?jìng)髦低ㄟ^(guò)events ($emit);父調(diào)用子方法通過(guò)ref;provide / inject。

2、兄弟通信:bus

3、跨級(jí)嵌套通信:bus;provide / inject等。

Vuex可以理解為一種開(kāi)發(fā)模式或框架,通過(guò)狀態(tài)集中管理驅(qū)動(dòng)組件的變化,應(yīng)用級(jí)的狀態(tài)集中放在store中,改變狀態(tài)的方式是提交mutations,異步邏輯封裝在action中。

文章“【W(wǎng)eb前端基礎(chǔ)知識(shí)】Vuex狀態(tài)管理”已幫助

>>本文地址:http://nfbqydst.cn/zhuanye/2021/69830.html

THE END  

聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。

1 您的年齡

2 您的學(xué)歷

3 您更想做哪個(gè)方向的工作?

獲取測(cè)試結(jié)果
  • 大前端大前端
  • 大數(shù)據(jù)大數(shù)據(jù)
  • 互聯(lián)網(wǎng)營(yíng)銷(xiāo)互聯(lián)網(wǎng)營(yíng)銷(xiāo)
  • JavaJava
  • Linux云計(jì)算Linux
  • Python+人工智能Python
  • 嵌入式物聯(lián)網(wǎng)嵌入式
  • 全域電商運(yùn)營(yíng)全域電商運(yùn)營(yíng)
  • 軟件測(cè)試軟件測(cè)試
  • 室內(nèi)設(shè)計(jì)室內(nèi)設(shè)計(jì)
  • 平面設(shè)計(jì)平面設(shè)計(jì)
  • 電商設(shè)計(jì)電商設(shè)計(jì)
  • 網(wǎng)頁(yè)設(shè)計(jì)網(wǎng)頁(yè)設(shè)計(jì)
  • 全鏈路UI/UE設(shè)計(jì)UI設(shè)計(jì)
  • VR/AR游戲開(kāi)發(fā)VR/AR
  • 網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全
  • 新媒體與短視頻運(yùn)營(yíng)新媒體
  • 直播帶貨直播帶貨
  • 智能機(jī)器人軟件開(kāi)發(fā)智能機(jī)器人
 

快速通道fast track

近期開(kāi)班時(shí)間TIME