国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Vuex mutitons和actions初使用詳解

2019-11-19 12:02:48
字體:
來源:轉載
供稿:網友

Mutations

mutations 必須是同步函數,為什么?

舉個例子:  官方案例

mutations: { someMutation (state) {  api.callAsyncMethod(() => {   state.count++  }) }}

我們都知道任何回調函數中進行的狀態改變都是無法追蹤的,  devtools會對mutations的每一條提交做記錄,記錄上一次提交之前和提交之后的狀態,在上面的例子中無法實現捕捉狀態,因為在執行mutations時,內部回調函數還沒有執行,

所以此時無法捕捉狀態.

再簡單來講,就像大家都吃過核桃,核桃剛產下來的時候是帶一層綠色的皮的,我們需要將綠色燒掉,弄掉了,才是我們在市場上見到的只有外面硬殼的核桃,如果我們只剝去綠皮,是不能直接吃的,因為還有一層殼胡著呢.

Actions

vuex肯定不甘示弱,為了解決mutations只有同步的問題,提出了actions(異步),專門用來解決mutations只有同步無異步的問題.

1. 首先先了解一下actions

(1).MUTATIONS

const state = {    xxx: null  },  const mutations = {    [setState](state, value) {      state.xxx = value    }  }


此處value可以是對象,可以是值等

組件調用方式: this.$store.commit('setState', [value])

(2).ACTIONS

  // 第一種寫法簡寫形式  const actions = {    [addPlus]({commit}) { // 簡寫方式,待研究      commit('[setState]', value)      //此處value可以是對象,可以是固定值等    }  }  // 第二種形式  const actions = {    [addPlus](context) {      //context 官方給出的指定對象, 此處context可以理解為store對象      context.commit('[setState]', value)    }  }  /* 兩處的commit都是提交的mutations中的字符串的事件類型名稱,對應會調用mutations中的回調函數 */  actions在組件中的調用方式:   import mapActions from 'vuex'  methods: {    ...mapActions: ([     'addPlus'     ]),    setAddPlus () {      this.$store.dispatch('addPlus', [value]) // 異步調用mutations    }  }

Vuex 狀態管理

Vuex 依賴于 Vue 用來管理 Vue 項目狀態

狀態的修改依賴于 commit 和 dispatch

import Vue from 'Vue';import Vuex from 'Vuex';export default new Vuex.Store({  state:{    count:100  },  mutations:{    change(state,payload){      state.count += payload;    }  },  actions:{    change(context,palyload){      context.commit('change',palyload);// 異步觸發 mutaiton    }  },  getters:{    getCount(){      return state.count;    }  }})
{{$store.state.count}}<button @click="commitChange">更改count</button><button @click="dispatchChange">更改count</button>...methods:{  commitChange(){    this.$store.commit('change',1);  },  dispatchChange(){    this.$sotre.dispatch('change',10);  }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河曲县| 高安市| 华坪县| 庐江县| 平安县| 称多县| 泰州市| 普洱| 洞头县| 吴忠市| 胶南市| 忻城县| 高碑店市| 保康县| 泽普县| 涪陵区| 宁化县| 台北县| 临汾市| 岑巩县| 潍坊市| 旅游| 兴宁市| 丹巴县| 资阳市| 诸暨市| 陈巴尔虎旗| 景泰县| 浦东新区| 元朗区| 恩平市| 承德市| 西吉县| 淳安县| 玉山县| 扎赉特旗| 广安市| 芷江| 普安县| 横山县| 泉州市|