介紹Vuex原理
參考文檔:https://vuex.vuejs.org/zh/
Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式妇押。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài)喂分,并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化碌廓。
什么是“狀態(tài)管理模式”?
這個(gè)狀態(tài)自管理應(yīng)用包含以下幾個(gè)部分:
state,驅(qū)動(dòng)應(yīng)用的數(shù)據(jù)源呆瞻;
view滞造,以聲明方式將?state?映射到視圖;
actions栋烤,響應(yīng)在?view?上的用戶輸入導(dǎo)致的狀態(tài)變化。
以下是一個(gè)表示“單向數(shù)據(jù)流”理念的簡(jiǎn)單示意:
但是挺狰,當(dāng)我們的應(yīng)用遇到多個(gè)組件共享狀態(tài)時(shí)明郭,單向數(shù)據(jù)流的簡(jiǎn)潔性很容易被破壞:
多個(gè)視圖依賴于同一狀態(tài)。
來(lái)自不同視圖的行為需要變更同一狀態(tài)丰泊。
對(duì)于問(wèn)題一薯定,傳參的方法對(duì)于多層嵌套的組件將會(huì)非常繁瑣,并且對(duì)于兄弟組件間的狀態(tài)傳遞無(wú)能為力瞳购。對(duì)于問(wèn)題二话侄,我們經(jīng)常會(huì)采用父子組件直接引用或者通過(guò)事件來(lái)變更和同步狀態(tài)的多份拷貝。以上的這些模式非常脆弱学赛,通常會(huì)導(dǎo)致無(wú)法維護(hù)的代碼年堆。
因此,我們?yōu)槭裁床话呀M件的共享狀態(tài)抽取出來(lái)盏浇,以一個(gè)全局單例模式管理呢变丧?在這種模式下,我們的組件樹(shù)構(gòu)成了一個(gè)巨大的“視圖”绢掰,不管在樹(shù)的哪個(gè)位置痒蓬,任何組件都能獲取狀態(tài)或者觸發(fā)行為!
通過(guò)定義和隔離狀態(tài)管理中的各種概念并通過(guò)強(qiáng)制規(guī)則維持視圖和狀態(tài)間的獨(dú)立性滴劲,我們的代碼將會(huì)變得更結(jié)構(gòu)化且易維護(hù)攻晒。