actions

接上文mutations里的異步問(wèn)題,在Vue Component 和 mutations之間增加actions環(huán)節(jié)虑鼎,使用actions替代Vue Component 提交(commit)mutations

<template>
  <div id="app">
    <h2>{{ $store.state.student }}</h2>
    <button @click="changeStudent">改變student中的name</button>
  </div>
</template>

<script>
export default {
  name: 'App',
  data() {
    return {}
  },
  methods: {
    changeStudent() {
      this.$store.dispatch('AUpdateStudent','我是攜帶的參數(shù)payload')
    }
  }
}
</script>
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    student: {
      age: 18,
      name: 'haha'
    }
  },
  mutations: {
   updateStudent(state,payload) {
      state.student.name = payload
    }
  },
  actions:{
    AUpdateStudent(context,payload){ //context 上下文 --- 這里可以理解為store對(duì)象  ,actions同樣可以接收payload
      console.log(payload)
      setTimeout(()=>{
        context.commit('updateStudent',payload)
      },1000)
    }
  }

})
export default store
image.png

對(duì)象的解構(gòu)在這里方便使用

  actions: {
    AUpdateStudent({state,commit,rootState}, payload) {
      setTimeout(() => {
        context.commit('updateStudent', payload)
      }, 1000)
    }
  }

mapActions

actions.js

export default {
  Aincrement(context){
    setTimeout(() => {
       context.commit('increment',1) 
    }, 1000);
  }
}

store

import Vue from 'vue'
import Vuex from 'vuex'
import actions from './actions'

Vue.use(Vuex)

const store = new Vuex.Store({

  state: {
    counter: 10
  },
  mutations: {
    increment(state, payload) {
      state.counter += payload
    }
  },
  actions

})
export default store

App.vue

<template>
  <div id="app">
    <h2>{{ $store.state.counter }}</h2>
    <button @click="Aincrement">異步增加1</button>

  </div>
</template>

<script>
import { mapActions } from 'vuex'
export default {
  name: 'App',
  data () {
    return {}
  },
  methods: {
    ...mapActions(['Aincrement'])
  }
}
</script>

以對(duì)象的形式映射methods
App.vue 將increment1 映射到 actions

<template>
  <div id="app">
    <h2>{{ $store.state.counter }}</h2>
    <button @click="increment1">異步增加1</button>

  </div>
</template>

<script>
import { mapActions } from 'vuex'
export default {
  name: 'App',
  data () {
    return {}
  },
  methods: {
    ...mapActions({
      increment1: 'Aincrement'
    })
  }
}
</script>

actions同樣可以接收參數(shù)

export default {
  Aincrement(context,payload){
    setTimeout(() => {
       context.commit('increment',payload) 
    }, 1000);
  }
}
<button @click="Aincrement(10)">異步增加1</button>

  methods: {
    ...mapActions(['Aincrement'])
  }

Actions通常針對(duì)異步操作,如何監(jiān)聽(tīng)異步操作成功键痛?使用promise
actions.js

export default {
  Aincrement(context,payload){
    return new Promise((resolve,reject)=>{
      setTimeout(() => {
        context.commit('increment',payload) 
        resolve(111)
     }, 1000);
    })
   
  }
}

store

import Vue from 'vue'
import Vuex from 'vuex'
import actions from './actions'

Vue.use(Vuex)

const store = new Vuex.Store({

  state: {
    counter: 10
  },
  mutations: {
    increment(state, payload) {
      state.counter += payload
    }
  },
  actions

})
export default store

App.vue

<template>
  <div id="app">
    <h2>{{ $store.state.counter }}</h2>
    <button @click="increment(10)">異步增加10</button>

  </div>
</template>

<script>
import { mapActions } from 'vuex'
export default {
  name: 'App',
  data () {
    return {}
  },
  methods: {
    ...mapActions(['Aincrement']),
    increment(count){
      this.Aincrement(count).then(res=>{
        console.log('增加完成',res)
      })
    }
  }
}
</script>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末炫彩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子絮短,更是在濱河造成了極大的恐慌江兢,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丁频,死亡現(xiàn)場(chǎng)離奇詭異杉允,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)席里,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)叔磷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人奖磁,你說(shuō)我怎么就攤上這事改基。” “怎么了咖为?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵秕狰,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我躁染,道長(zhǎng)鸣哀,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任褐啡,我火速辦了婚禮诺舔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己低飒,他們只是感情好许昨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著褥赊,像睡著了一般糕档。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拌喉,一...
    開(kāi)封第一講書(shū)人閱讀 51,274評(píng)論 1 300
  • 那天速那,我揣著相機(jī)與錄音,去河邊找鬼尿背。 笑死端仰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的田藐。 我是一名探鬼主播荔烧,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼汽久!你這毒婦竟也來(lái)了鹤竭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤景醇,失蹤者是張志新(化名)和其女友劉穎臀稚,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體三痰,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吧寺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酒觅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撮执。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡微峰,死狀恐怖舷丹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜓肆,我是刑警寧澤颜凯,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站仗扬,受9級(jí)特大地震影響症概,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜早芭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一彼城、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦募壕、人聲如沸调炬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缰泡。三九已至,卻和暖如春代嗤,著一層夾襖步出監(jiān)牢的瞬間棘钞,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工干毅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宜猜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓硝逢,卻偏偏與公主長(zhǎng)得像宝恶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子趴捅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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

  • ?? OK垫毙!本節(jié)我們來(lái)學(xué)習(xí)使用Actions,Actions存在的意義是vuex作者假設(shè)你在修改state的時(shí)候有異...
    木頭就是我呀閱讀 24,470評(píng)論 5 21
  • ### store 1. Vue 組件中獲得 Vuex 狀態(tài) ```js //方式一 全局引入單例類(lèi) // 創(chuàng)建一...
    蕓豆_6a86閱讀 730評(píng)論 0 3
  • actions異步修改狀態(tài) actions和mutations是類(lèi)似的拱绑,不同之處在于: Action提交的是Mut...
    一蓑煙雨任平生_cui閱讀 4,808評(píng)論 1 6
  • ## 框架和庫(kù)的區(qū)別?> 框架(framework):一套完整的軟件設(shè)計(jì)架構(gòu)和**解決方案**综芥。> > 庫(kù)(lib...
    Rui_bdad閱讀 2,907評(píng)論 1 4
  • Action 類(lèi)似于 mutation,不同在于: Action 提交的是 mutation猎拨,而不是直接變更狀態(tài)(...
    早起的鳥(niǎo)兒閱讀 239評(píng)論 0 0