Vuex學(xué)習(xí)之路-入門篇

概述

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

概述解讀

從vuex的概念中我們可以獲取到以下重點信息:

生命的意義

Vuex為Vue.js而生,是一種數(shù)據(jù)狀態(tài)管理模式

優(yōu)秀之處

  1. 數(shù)據(jù)倉庫: 集中式存儲

  2. 組件通信: 便于在各個組件之間進(jìn)行數(shù)據(jù)共享专甩、傳遞

  3. 單項數(shù)據(jù)流: 遵循特定的規(guī)則,特定的入口改變數(shù)據(jù),特定的出口輸出數(shù)據(jù)驯遇,同時可監(jiān)測到數(shù)據(jù)的變化過程

    vuex單項數(shù)據(jù)流模式圖

Vuex的基本使用流程 - 簡單計數(shù)器

  1. 下載安裝依賴

     npm i vuex -s
    
  2. 創(chuàng)建store倉庫,并在vue中掛載

     //  src/store/index.js
     import Vuex from 'vuex'
     import Vue from 'vue'
    
     Vue.use(Vuex)
     
     const store = new Vuex.Store({
         // 聲明在倉庫中的數(shù)據(jù)
         state: {
             number: 1
         }
     })
     export default store
     
     // src/main.js
     import store from '@/store'
     new Vue({
         // ...
         store
     })
    
  3. 在組件中使用state數(shù)據(jù)

    vuex通過computed計算屬性監(jiān)測數(shù)據(jù)的變化蓄髓,進(jìn)而影響到所有組件中數(shù)據(jù)的狀態(tài)

    a. 計算屬性中使用this.$store.state獲取

     computed: {
         number () {
             return this.$store.state.number
         }
     }
    

    b. 借助輔助函數(shù)mapState實現(xiàn)

     // 組件內(nèi)引入mapState
     import { mapState } from 'vuex'
     
     computed: {
         ...mapState([
             'number'
         ])
     }
    
  4. 在store中定義mutations叉庐,改變state狀態(tài)

     new Vuex.Store({
         // ...
         mutations: {
             plus (state) {
                 state.number++
             }
         }
     })
    
  5. 在各個組件中可以通過提交mutations改變state數(shù)據(jù)

     // src/App.vue
     <template>
         <div id="a-com">
             <h3>state的number: {{ number }}</h3>
             <a-com></a-com>
             <b-com></b-com>
         </div>  
     </template>
     <script>
     import { mapState } from 'vuex'
     import ACom from '@/components/ACom
     import BCom from '@/components/BCom
     export default {
         name: 'App',
         computed: {
             ...mapState([
                 'number'
             ])
         },
         components: {
             ACom,
             BCom
         }
     }
     </script>
     
     // src/components/ACom.vue
     <template>
         <div id="a">
             <h3>A組件的number: {{ number }}</h3>
             <button @click="plusNumber">+</button>
         </div>  
     </template>
     <script>
     import { mapState, mapMutations } from 'vuex'
     export default {
         name: 'A',
         computed: {
             ...mapState([
                 'number'
             ])
         },
         methods: {
             // 返回需要的mutations函數(shù)
             ...mapMutaions([
                 'plus'
             ]),
             plusNumber () {
                 // 1. 直接通過store提交mutations
                 // 此處plus是mutations中的方法
                 // this.$store.commit('plus')
                 
                 // 2. 使用mapMutations輔助函數(shù)                    this.plus()
             }
         }
     }
     </script>
    

    在src/components/BCom.vue中定義相同的結(jié)構(gòu)

    以上操作后,效果如下圖:


    組件效果圖

    當(dāng)點擊A+或者B+的按鈕時都會觸發(fā)數(shù)據(jù)倉庫state中的number變化

小結(jié)

通過vuex我們在不同的組件中共享了數(shù)據(jù)会喝,實現(xiàn)了某個組件改變數(shù)據(jù)時陡叠,其他組件同時響應(yīng)

vuex的應(yīng)用場景

  1. 檢測用戶是否登錄

     當(dāng)在登錄組件中處理了登錄信息后,存入state倉庫中肢执,可在所有的組件中進(jìn)行用戶數(shù)據(jù)共享枉阵,判斷是否有權(quán)限
    
  2. 非父子組件值傳遞

    其實父子組件中也是可以使用vuex,主要看業(yè)務(wù)的復(fù)雜度
    

只要涉及到多組件數(shù)據(jù)進(jìn)行共享预茄、傳遞兴溜,都可以選擇使用vuex

結(jié)語

以上就是胡哥給各位小伙伴帶來的Vuex學(xué)習(xí)之路-入門篇,關(guān)于Vuex中actions、與后端的數(shù)據(jù)請求方式以及多模塊狀態(tài)管理分割內(nèi)容拙徽,請關(guān)注胡哥的下一篇文章:Vuex學(xué)習(xí)之路-進(jìn)階篇

轉(zhuǎn)載須知

原創(chuàng)不易:本文原創(chuàng)首發(fā)于簡書,轉(zhuǎn)載請注明來源地址和作者

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刨沦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子斋攀,更是在濱河造成了極大的恐慌已卷,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淳蔼,死亡現(xiàn)場離奇詭異侧蘸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鹉梨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門讳癌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人存皂,你說我怎么就攤上這事晌坤。” “怎么了旦袋?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵骤菠,是天一觀的道長。 經(jīng)常有香客問我疤孕,道長商乎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任祭阀,我火速辦了婚禮鹉戚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘专控。我一直安慰自己抹凳,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布伦腐。 她就那樣靜靜地躺著赢底,像睡著了一般。 火紅的嫁衣襯著肌膚如雪柏蘑。 梳的紋絲不亂的頭發(fā)上颖系,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機(jī)與錄音辩越,去河邊找鬼。 笑死信粮,一個胖子當(dāng)著我的面吹牛黔攒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼督惰,長吁一口氣:“原來是場噩夢啊……” “哼不傅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赏胚,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤访娶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后觉阅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體崖疤,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年典勇,在試婚紗的時候發(fā)現(xiàn)自己被綠了劫哼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡割笙,死狀恐怖权烧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伤溉,我是刑警寧澤般码,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站乱顾,受9級特大地震影響板祝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜糯耍,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一扔字、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧温技,春花似錦革为、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜓堕,卻和暖如春抛虏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背套才。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工迂猴, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人背伴。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓沸毁,卻偏偏與公主長得像峰髓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子息尺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

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

  • Vuex 的學(xué)習(xí)記錄 資料參考網(wǎng)址Vuex中文官網(wǎng)Vuex項目結(jié)構(gòu)示例 -- 購物車Vuex 通俗版教程Nuxt....
    流云012閱讀 1,453評論 0 7
  • 安裝 npm npm install vuex --save 在一個模塊化的打包系統(tǒng)中携兵,您必須顯式地通過Vue.u...
    蕭玄辭閱讀 2,929評論 0 7
  • Vuex是什么? Vuex 是一個專為 Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式搂誉。它采用集中式存儲管理應(yīng)用的所有組件...
    蕭玄辭閱讀 3,111評論 0 6
  • 姓名:岳沁 學(xué)號:17101223458 轉(zhuǎn)載自:http://blog.csdn.net/h5_queensty...
    丘之心閱讀 2,135評論 0 1
  • 這兩天在做Vue移動端的項目徐紧,正好用到了Vuex,記錄一下相關(guān)知識炭懊。 一并级、安裝 npm yarn Vuex是Vue...
    婷樓沐熙閱讀 7,681評論 2 2