Vue狀態(tài)管理器

Vuex 是一個專為 Vue.js 應用程序開發(fā)的狀態(tài)管理模式栗弟。它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化横腿。


image.png

1.State --- 驅(qū)動應用的數(shù)據(jù)源(存儲著需要管理的組件的狀態(tài))

(1)組件內(nèi)部通過 this.$store.state.loginState 拿到登陸狀態(tài)
(2)組件內(nèi)部通過 計算屬性 結(jié)合 mapState 輔助函數(shù)拿到組件狀態(tài)
在需要使用狀態(tài)的組件內(nèi)部通過mapState輔助函數(shù)獲裙⒑浮:

第一步

第二步

第三步

2.Getter --- 可以看作是state的計算屬性罗侯,類似于組件中的data與computed

tip:getters可以不用,在組件內(nèi)部寫一個關(guān)于state的計算屬性
(1)組件內(nèi)部通過 this.$store.getters.len 拿到getter對應的狀態(tài)
(2)組件內(nèi)部通過 計算屬性 結(jié)合 mapGetters 輔助函數(shù)拿到getter對應的狀態(tài)
通過mapGetters輔助函數(shù)獲热宜:

第一步

第二步

第三步

此時可以this.len使用len的值措左,在template中{{ len }}使用

3.Mutation --- 更改 Vuex 的store中的狀態(tài)的唯一方法是提交mutation(同步函數(shù))

Vuex 中的 mutation 非常類似于事件:每個 mutation 都有一個字符串的 事件類型 (type) 和 一個 回調(diào)函數(shù) (handler)避除。這個回調(diào)函數(shù)就是我們實際進行狀態(tài)更改的地方,并且它會接受 state 作為第一個參數(shù)


store.js

需更改狀態(tài)的組件

用常量代替mutation的函數(shù)名

創(chuàng)建一個mutation-types.js文件凉逛,定義一個常量暴露出去

在store.js中引入這個常量

另一種引入方式:
引入全部的常量

引入全部的常量的這個方式状飞,使用的時候:types.CHANGE_LOGIN_STATE

將函數(shù)名改為常量

在登錄頁面诬辈,先引入這個常量(和store.js中引入方法相同),然后把函數(shù)名替換掉

用不用常量取決于你——在需要多人協(xié)作的大型項目中自晰,這會很有幫助。但如果你不喜歡酬荞,你完全可以不這樣做

4.Action

Action 類似于 mutation搓劫,不同在于:

Action 提交的是 mutation枪向,而不是直接變更狀態(tài)。
Action 可以包含任意異步操作秘蛔。

4.1異步操作在組件內(nèi)部

store.js中添加kindlist的狀態(tài)以及添加修改的mutation

store.js

kind.vue

數(shù)據(jù)渲染到頁面

總結(jié):狀態(tài)管理器中添加kindlist的狀態(tài)深员,添加mutation來改變kindlist的狀態(tài),在組件內(nèi)部將請求到的數(shù)據(jù)提交到mutation倦畅,從而儲存在kindlist中,然后通過mapState輔助函數(shù)拿到更新后的kindlist叠赐,最后渲染到頁面

4.2異步操作交給狀態(tài)管理器去處理

(1)在actions中定義一個函數(shù)屡江,將之前在組件中的異步操作放到函數(shù)中:


store.js

(2)在組件中觸發(fā)actions


kind.vue

5.module模塊組

隨著項目的復雜性增加,我們共享的狀態(tài)越來越多惩嘉,這時候我們就需要把我們狀態(tài)的各種操作進行一個分組,分組后再進行按組編寫宏怔。那今天我們就學習一下module:狀態(tài)管理器的模塊組操作。

5.1聲明模塊組:
在vuex/store.js中聲明模塊組,我們還是用我們的const常量的方法聲明模塊組斜脂。代碼如下:

const moduleA={
    state,mutations,getters,actions
}

聲明好后,我們需要修改原來 Vuex.Stroe里的值:

export default new Vuex.Store({
    modules:{a:moduleA}
})

5.2在組件中使用:

<span>{{ $store.state.a.loginState}}</span>

個人理解至此實現(xiàn)了:
vue components通過dispatch觸發(fā)actions帚戳,actions提交commitmutationsmutations更改state的狀態(tài)偏友,state中的狀態(tài)通過組件vue components渲染到頁面!

tips:為什么要使用狀態(tài)管理器 --- 方便各個組件間的傳值!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末位他,一起剝皮案震驚了整個濱河市氛濒,隨后出現(xiàn)的幾起案子舞竿,更是在濱河造成了極大的恐慌,老刑警劉巖骗奖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件醒串,死亡現(xiàn)場離奇詭異,居然都是意外死亡芜赌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門椎木,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人香椎,你說我怎么就攤上這事⌒蠓ィ” “怎么了躺率?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長悼吱。 經(jīng)常有香客問我,道長后添,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任馅精,我火速辦了婚禮,結(jié)果婚禮上洲敢,老公的妹妹穿的比我還像新娘。我一直安慰自己压彭,他們只是感情好睦优,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布刨秆。 她就那樣靜靜地躺著忆畅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪家凯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天送粱,我揣著相機與錄音,去河邊找鬼掂之。 笑死,一個胖子當著我的面吹牛世舰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胰蝠,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼震蒋,長吁一口氣:“原來是場噩夢啊……” “哼茸塞!你這毒婦竟也來了钾虐?” 一聲冷哼從身側(cè)響起梗搅,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎无切,沒想到半個月后丐枉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哆键,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡籍嘹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了辱士。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡颂碘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出塔拳,到底是詐尸還是另有隱情,我是刑警寧澤靠抑,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布适掰,位于F島的核電站,受9級特大地震影響类浪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜戚宦,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望垦搬。 院中可真熱鬧,春花似錦猴贰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至捐祠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間踱蛀,已是汗流浹背贵白。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工崩泡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人角撞。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像磷蜀,于是被迫代替她去往敵國和親百炬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容