Vue 中 store 基本用法

用來管理狀態(tài)办斑,共享數(shù)據(jù)扩灯,在各個組件之間管理外部狀態(tài)

第一步:項目安裝vuex插件

npm i vuex

第二步:引入vuex牵署,并通過use方法使用它

import Vuex from 'vuex'
Vue.use(Vuex)

第三步: 創(chuàng)建狀態(tài)倉庫

//創(chuàng)建狀態(tài)倉庫疚颊,注意第二個Store是大寫的不能改狈孔,,state也是不能改

var store = new Vuex.Store({
state:{    //在state對象建立需要數(shù)據(jù)
      XXX:xxx
      }
})

第四步:在main.js注入Vue實例當中

 new Vue({
  el: '#app',
  router,
  store,   //注入store,當鍵名(key)和值(value)名字一樣可以這樣縮寫
  components: { App },
  template: '<App/>'
})

第五步:通過this.$sore.state.XXX拿到全局狀態(tài)

computed:{
    getOutterNum:function(){
      return this.$store.state.XXX
    }
  }

七斑胜、Vuex的相關(guān)操作
vuex狀態(tài)管理的流程
view——->actions—–>mutations—–>state——->view

一绍申、
方法一、更改 Vuex 的 store 中的狀態(tài)的唯一方法是提交 mutation

const store = new Vuex.Store({    //定義了store
  state:{
        num:88
        },
  mutations:{    //定義狀態(tài)改變函數(shù)  相當于methods方法
      increase:function(state){
           state.num++
      },
      decrease:function(state){
          state.num--
    //1、store.commit('save')  定義了的store利用commit在mutations調(diào)用自身mutations其他函數(shù)
      }
    //2传惠、save(){...}
  }
})

在其他組件中利用commit來觸發(fā)mutations函數(shù)

 methods:{
    sadd:function(){
      this.$store.commit('increase')  //commit方法里面是mutations定義的函數(shù)名
    }
  },

this.$store.commit('increase',xxx) xxx表示傳入?yún)?shù)靶累,如果需要傳入多個參數(shù)顾患,將xxx表示成對象{xxx1:'',xxx2:''}方式傳入暇检,在對象內(nèi)構(gòu)成多個需要傳入?yún)?shù)。
方法二:
利用actions中對mucations進行操作深寥,間接對state進行修改

 mutations:{
    increase:function(state){
         state.num++
    },
    decrease:function(state){
         state.num--
    }
  },
  actions:{   //actions中只能對mucations進行操作
      //context為上下文對象
     decreaseActions:function(context){
          context.commit('decrease')  //decrease方法是mucations中定義的方法
    }
  }
})

利用dispatch來觸發(fā)actions函數(shù)

saddActions:function(){
      //dispatch方法里面是actions定義的函數(shù)名
      this.$store.dispatch('decreaseActions')
  }

mucations和actions兩者之間區(qū)別
1攘乒、傳遞參數(shù)不一樣,前者傳遞是state惋鹅,后者傳遞是context则酝。
2、調(diào)用的方式不一樣闰集,前者靠this.$store.commit('xxx')觸發(fā)沽讹,后者靠this.$store.dispatch('xxx')觸發(fā)。
3武鲁、actions可以包含異步操作爽雄,但是mutation只能包含同步操作

actions:{  
     decreaseActions:function(context){
       setTimeout(() => {     //延時一秒的異步操作
        context.commit('decrease')
       }, 1000);
    }
  }

二、getters是vuex中的一個屬性沐鼠,主要作用于vue中的計算屬性(computed)類似挚瘟,用來存放一些經(jīng)過修改的數(shù)值

 getters:{
      getNum:function(state){
         return state.num>0? state.num:0
      } 
  }

在調(diào)用getters中的內(nèi)容是使用$store.getters.函數(shù)名進行調(diào)用

computed:{
    getParentNum:function(){
      return this.$store.getters.getNum   //getNum是getter里面定義方法
    }
  }

總結(jié):在工程化項目中,vuex所有內(nèi)容建議和routers一樣饲梭,在src中建立一個state文件夾>index.js刽沾,將vuex內(nèi)容寫在index.js中,再導(dǎo)出到main.js中排拷。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锅尘,隨后出現(xiàn)的幾起案子监氢,更是在濱河造成了極大的恐慌,老刑警劉巖藤违,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浪腐,死亡現(xiàn)場離奇詭異,居然都是意外死亡顿乒,警方通過查閱死者的電腦和手機议街,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來璧榄,“玉大人特漩,你說我怎么就攤上這事吧雹。” “怎么了涂身?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵雄卷,是天一觀的道長。 經(jīng)常有香客問我蛤售,道長丁鹉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任悴能,我火速辦了婚禮揣钦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘漠酿。我一直安慰自己冯凹,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布记靡。 她就那樣靜靜地躺著谈竿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪摸吠。 梳的紋絲不亂的頭發(fā)上空凸,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音寸痢,去河邊找鬼呀洲。 笑死,一個胖子當著我的面吹牛啼止,可吹牛的內(nèi)容都是我干的道逗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼献烦,長吁一口氣:“原來是場噩夢啊……” “哼滓窍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起巩那,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤吏夯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后即横,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體噪生,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年东囚,在試婚紗的時候發(fā)現(xiàn)自己被綠了跺嗽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖桨嫁,靈堂內(nèi)的尸體忽然破棺而出植兰,到底是詐尸還是另有隱情,我是刑警寧澤瞧甩,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布钉跷,位于F島的核電站,受9級特大地震影響肚逸,放射性物質(zhì)發(fā)生泄漏爷辙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一朦促、第九天 我趴在偏房一處隱蔽的房頂上張望膝晾。 院中可真熱鬧,春花似錦务冕、人聲如沸血当。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽臊旭。三九已至,卻和暖如春箩退,著一層夾襖步出監(jiān)牢的瞬間离熏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工戴涝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留滋戳,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓啥刻,卻偏偏與公主長得像奸鸯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子可帽,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

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

  • 最近在使用vue的過程中娄涩,遇到一個需求,就是需要在不同路由中使用同一個會改編的參數(shù)映跟,也就是需要一個全局參數(shù)钝满,一...
    嘻哈哈_95fe閱讀 294,010評論 8 63
  • VueX 是一個專門為 Vue.js 應(yīng)用設(shè)計的狀態(tài)管理構(gòu)架,統(tǒng)一管理和維護各個vue組件的可變化狀態(tài)(你可以理解...
    Koreyoshi丶閱讀 4,250評論 0 0
  • 一申窘、概念介紹 Vue.js和React.js分別是目前國內(nèi)和國外最火的前端框架,框架跟類庫/插件不同孔轴,框架是一套完...
    劉遠舟閱讀 1,057評論 0 0
  • #vue2筆記 ##腳手架文件結(jié)構(gòu) ├──node_modules ├──public │├──favicon.i...
    Daydream_許多閱讀 428評論 0 0
  • 筆記 腳手架文件結(jié)構(gòu) 關(guān)于不同版本的Vue vue.js與vue.runtime.xxx.js的區(qū)別:vue.js...
    sskingfly閱讀 143評論 0 0