Vue.js數(shù)據(jù)狀態(tài)管理-Vuex

上次分享回顧

父子組件的通信

  • 父 -> 子: props
  • 子 -> 父: 自定義event
  • 組件文檔化

Vuex起步

Vuex主要應(yīng)用于中算柳、大型單頁應(yīng)用的數(shù)據(jù)狀態(tài)管理架構(gòu)押袍。

為什么要數(shù)據(jù)狀態(tài)管理?

  • 組件數(shù)據(jù)共享

組件之間如何數(shù)據(jù)共享(組件通信)

  • 父 -> 子:props
  • 子 -> 父:自定義event
  • 兄弟之間侧巨?其他非父子? :自定義event稠集?

可能的解法

  1. 自定義event

    var bus = new Vue()
    // in component A's method
    bus.$emit('id-selected', 1)
    
    // in component B's created hook
    
    bus.$on('id-selected', function(id){
      //...
    })
    
  2. 共享數(shù)據(jù)源

    const srcData = {
      count: 0
    }
    
    const vmA = new Vue({
      data: srcData
    })
    
    const vmB = new Vue({
      data: srcData
    })
    

存在的問題

  • 誰在emit事件?誰在on事件微峰?父組件和子組件強(qiáng)耦合
  • 如何追蹤數(shù)據(jù)的狀態(tài)變化?
  • 業(yè)務(wù)邏輯遍布各個(gè)組件抒钱,導(dǎo)致各種意想不到的問題

Vuex基本概念

  • state
    • 狀態(tài)的容器
  • getters
    • 狀態(tài)的獲取函數(shù)
  • mutations
    • 修改狀態(tài)的事件回調(diào)函數(shù)
  • actions
    • 分發(fā)修改狀態(tài)的事件
const store = new Vuex.Store({
  //state
  state: {
    count: 0
  },
  //mutations
  mutations: {
    INIT (state, data) {
      state.count = data.count
    },
    INCREASE (state) {
      state.count++
    },
    DECREASE (state) {
      state.count--
    }
  },
  //getters
  getters: {
    getCount (state) {
      return state.count
    }
  },
  //actions
  actions: {
    init(context){
      context.commit('INIT', {
        count: 10
      })
    },
    inc(context){
      context.commit('INCREASE')
    },
    dec(context){
      context.commit('DECREASE')
    }
  }
})

Vuex基本理解

  • 數(shù)據(jù)的集合其中處理(DB)
  • 數(shù)據(jù)的操作集中處理 (CRUD)
  • 所有對(duì)數(shù)據(jù)的操作(CRUD)以請求(commit)的方式提交處理 (DAO)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜓肆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子谋币,更是在濱河造成了極大的恐慌仗扬,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕾额,死亡現(xiàn)場離奇詭異早芭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)诅蝶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門退个,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人调炬,你說我怎么就攤上這事语盈。” “怎么了缰泡?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵刀荒,是天一觀的道長。 經(jīng)常有香客問我匀谣,道長照棋,這世上最難降的妖魔是什么资溃? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任武翎,我火速辦了婚禮,結(jié)果婚禮上溶锭,老公的妹妹穿的比我還像新娘宝恶。我一直安慰自己,他們只是感情好趴捅,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布垫毙。 她就那樣靜靜地躺著,像睡著了一般拱绑。 火紅的嫁衣襯著肌膚如雪综芥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天猎拨,我揣著相機(jī)與錄音膀藐,去河邊找鬼屠阻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛额各,可吹牛的內(nèi)容都是我干的国觉。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼虾啦,長吁一口氣:“原來是場噩夢啊……” “哼麻诀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起傲醉,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤蝇闭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后需频,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丁眼,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年昭殉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苞七。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挪丢,死狀恐怖蹂风,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乾蓬,我是刑警寧澤惠啄,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站任内,受9級(jí)特大地震影響撵渡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜死嗦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一趋距、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧越除,春花似錦节腐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至孩擂,卻和暖如春狼渊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背类垦。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國打工狈邑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坦弟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓官地,卻偏偏與公主長得像酿傍,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子驱入,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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