VueX--VUE核心插件

使用VueX方法

1.安裝vuex模塊

????????npm install vuex --save

2.作為插件使用

????????Vue.use(Vuex)

3.定義容器

????????new Vuex.Store({

????????????這里面放定義狀態(tài)代碼

????????})

4.注入根實(shí)例

vuex代碼,一般放在src/store/index.js文件中

如何在vuex中定義狀態(tài)數(shù)據(jù)?

例:

????????let store = new Vuex.Store({?//創(chuàng)建Vuex實(shí)例

? ? ? ? ?//這里定義狀態(tài)數(shù)據(jù)

????????????????state: {

? ????????????? ???? count: 100

? ? ? ? ? ? ? ? ?}

????????});

vuex核心概念

store:類(lèi)似容器掌腰,包含應(yīng)用的大部分狀態(tài);

注意:

????????* 一個(gè)頁(yè)面只能有一個(gè)store

? ? ? ? * 狀態(tài)存儲(chǔ)是響應(yīng)式的

????????* 不能直接改變store中的狀態(tài)拢肆,唯一途徑顯示地提交mutations

State:包含所有應(yīng)用級(jí)別狀態(tài)的對(duì)象

Getters:在組件內(nèi)部獲取store中狀態(tài)的函數(shù)

Mutations:唯一修改狀態(tài)的事件回調(diào)函數(shù)

Actions:包含異步操作、提交mutation改變狀態(tài)

Modules:將store分割成不同的模塊

如何獲取定義的狀態(tài)數(shù)據(jù)靖诗?

在需要獲取數(shù)據(jù)的單頁(yè)面文件組件中,使用以下方法:

如何改變vuex容器中(store)如的值支示?

方法1.改變非異步(不通過(guò)ajax)的值

????使用mutations屬性,處理同步數(shù)據(jù)修改

例:

vuex對(duì)象中寫(xiě):

在單頁(yè)面文件組件中調(diào)用

注意:

mutations不能直接調(diào)用刊橘;

調(diào)用方法:????

????$store.commit("寫(xiě)mutations中的回調(diào)函數(shù)名");

????這個(gè)方法,一個(gè)參數(shù)的時(shí)候颂鸿,是直接調(diào)用mutations函數(shù)促绵。

????第二個(gè)參數(shù),代表傳入mutations函數(shù)的參數(shù)嘴纺。

????第二個(gè)參數(shù)败晴,可以是1個(gè),多個(gè)的時(shí)候栽渴,傳一個(gè)對(duì)象尖坤;

如:

????$store.commit("寫(xiě)mutations中的回調(diào)函數(shù)名",{n:2});

????這樣在mutations:中就可以接收了

????commit的對(duì)象形式寫(xiě)法

????$store.commit({

????????type:'寫(xiě)mutations中的回調(diào)函數(shù)名',

????????de:10 //這個(gè)就是第二個(gè)參數(shù),key名隨便起

????})

方法2.改變異步(ajax獲取)的值

使用actions:處理異步數(shù)據(jù)修改

????//要先寫(xiě)好mutations的方法

????mutations:{

  ????addIncrement(state){

    state.count +=1;

  ????}

? ? ? },

? /*

????當(dāng)遇到數(shù)據(jù)是通過(guò)ajax異步請(qǐng)求過(guò)來(lái)的闲擦,這時(shí)數(shù)據(jù)會(huì)有延遲

? ? 這種時(shí)候慢味,就需要使用actions來(lái)提交mutations中的回調(diào)函數(shù)

*/

actions:{

? ? //函數(shù)名隨便寫(xiě)场梆,參數(shù)是一個(gè)對(duì)象,和store對(duì)象的方法屬性都一樣的對(duì)象纯路;

????????addAction(context){

    setTimeout(()=>{

      //通過(guò)context對(duì)象或油,可以使用commit方法,參數(shù)輸入mutations中的函數(shù)名

? ? ? ?       context.commit('addIncrement');

    },1000);

  }

}

調(diào)用actions中的函數(shù)驰唬,方法如下

dispatch傳參的格式方法顶岸,與this.$store.commit()一模一樣

this.$store.dispatch('addAction');

actions中的函數(shù)可以相互調(diào)用傳值;

例:

actions:{

? ? //函數(shù)名隨便寫(xiě)叫编,參數(shù)是一個(gè)對(duì)象辖佣,和store對(duì)象的方法屬性都一樣的對(duì)象;

addAction(context){

    setTimeout(()=>{

    //通過(guò)context對(duì)象宵溅,可以使用commit方法凌简,參數(shù)輸入mutations中的函數(shù)名

? ? ? ?       context.commit('addIncrement');

    //這里調(diào)用了下面的函數(shù)

? ? ? ?       context.dispatch('testAction',{test:'測(cè)試'});

    },1000);

? ? },

? ? testAction(context,obj){//傳值正常傳

  //可以打印出'測(cè)試的數(shù)據(jù)'

  console.log(obj.test);

  }

? }

這里說(shuō)明一下actions傳值的另一種方法

actions:{

? ? //函數(shù)名隨便寫(xiě),參數(shù)是一個(gè)對(duì)象恃逻,和store對(duì)象的方法屬性都一樣的對(duì)象雏搂;

/*

這個(gè)context參數(shù),可以使用es6的結(jié)構(gòu)賦值方法寫(xiě)

? ? ? 直接傳一個(gè)對(duì)象形式{commit,dispatch} 把需要的方法直接寫(xiě)到里面寇损,不用傳context去調(diào)用對(duì)應(yīng)的方法

? ? ? 這樣寫(xiě)更方便凸郑。

es6的結(jié)構(gòu)賦值:把一個(gè)對(duì)象里面的屬性,直接放到對(duì)象中矛市;

*/

addAction({commit,dispatch}){

    setTimeout(()=>{

      //通過(guò)context對(duì)象芙沥,可以使用commit方法,參數(shù)輸入mutations中的函數(shù)名

? ? ? ?       commit('addIncrement');

      dispatch('testAction',{test:'測(cè)試'});

     },1000);

? ? },

? ? testAction(context,obj){

  console.log(obj.test);

  }

? }

getter計(jì)算狀態(tài)

作用:關(guān)于狀態(tài)數(shù)據(jù)中浊吏,一些對(duì)數(shù)據(jù)的處理(判斷/過(guò)濾)等而昨,都在getter屬性中處理。

寫(xiě)法:在vuex對(duì)象中寫(xiě)

getters:{

  filterCount(state){//state就是狀態(tài)對(duì)象

? ? ?     //在這里做count的判斷

? ? ?     return state.count >= 120 ? 120 : state.count;

  }

? }

調(diào)用方法:

computed:{//在計(jì)算屬性中取vuex定義的狀態(tài)數(shù)據(jù)

? ? ? ? ?     //getter的調(diào)用方法找田,就是在計(jì)算屬性中歌憨,另定義一個(gè)函數(shù),在這個(gè)函數(shù)中調(diào)用getter中判斷過(guò)的值

? ? ? ? ?   num2(){

    //$store中有g(shù)etters屬性墩衙,可以獲取getter中的filterCount的值

? ? ? ? ? ? ?     return this.$store.getters.filterCount;

  }

}

HTML顯示方法:

Vuex輔助函數(shù)

mapState:

????????當(dāng)一個(gè)組件需要獲取多個(gè)狀態(tài)時(shí)候务嫡,將這些狀態(tài)都聲明為計(jì)算屬性會(huì)有些重復(fù)和冗余。為了解決這個(gè)問(wèn)題漆改,我們可以使用 mapState 輔助函數(shù)幫助我們生成計(jì)算屬性心铃。

mapGetters:

? ???? 輔助函數(shù)僅僅是將 store 中的 getter 映射到局部計(jì)算屬性。

mapMutations:

? ???? 將 store 中的 mutations 映射到局部計(jì)算屬性挫剑。

mapActions:

? ???? 將 store 中的 actions 映射到局部計(jì)算屬性去扣。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市暮顺,隨后出現(xiàn)的幾起案子厅篓,更是在濱河造成了極大的恐慌秀存,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羽氮,死亡現(xiàn)場(chǎng)離奇詭異或链,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)档押,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)澳盐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人令宿,你說(shuō)我怎么就攤上這事叼耙。” “怎么了粒没?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵筛婉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我癞松,道長(zhǎng)爽撒,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任响蓉,我火速辦了婚禮硕勿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘枫甲。我一直安慰自己源武,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布想幻。 她就那樣靜靜地躺著粱栖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪脏毯。 梳的紋絲不亂的頭發(fā)上查排,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音抄沮,去河邊找鬼。 笑死岖瑰,一個(gè)胖子當(dāng)著我的面吹牛叛买,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蹋订,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼率挣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了露戒?” 一聲冷哼從身側(cè)響起椒功,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤捶箱,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后动漾,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體丁屎,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年旱眯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晨川。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡删豺,死狀恐怖共虑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情呀页,我是刑警寧澤妈拌,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站蓬蝶,受9級(jí)特大地震影響尘分,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疾党,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一音诫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧雪位,春花似錦竭钝、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至时肿,卻和暖如春庇茫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背螃成。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工旦签, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寸宏。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓宁炫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親氮凝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子羔巢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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