vuex中 this.$store.dispatch() 与 this.$store.commit()方法的区别

this. s t o r e . d i s p a t c h ( ) 与 t h i s . store.dispatch() 与 this. store.dispatch()this.store.commit()方法的区别总的来说他们只是存取方式的不同,两个方法都是传值给vuex的mutation改变state
this. s t o r e . d i s p a t c h ( ) : 含 有 异 步 操 作 , 例 如 向 后 台 提 交 数 据 , 写 法 : t h i s . store.dispatch() :含有异步操作,例如向后台提交数据,写法:this. store.dispatch()this.store.dispatch(‘action方法名’,值)
this. s t o r e . c o m m i t ( ) : 同 步 操 作 , , 写 法 : t h i s . store.commit():同步操作,,写法:this. store.commit()this.store.commit(‘mutations方法名’,值)

commit: 同步操作

存储 this.$store.commit('changeValue',name)
取值 this.$store.state.changeValue

dispatch: 异步操作

存储 this.$store.dispatch('getlists',name)
取值 this.$store.getters.getlists

案例 :

Vuex文件 src/store/index.js

import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

export const store = new Vuex.Store({
  // state专门用来保存 共享的状态值
  state: {
    // 保存登录状态
    login: false
  },
  // mutations: 专门书写方法,用来更新 state 中的值
  mutations: {
    // 登录
    doLogin(state) {
      state.login = true;
    },
    // 退出
    doLogout(state) {
      state.login = false;
    }
  }
});

组件JS部分 : src/components/Header.vue


组件JS部分 : src/components/Login.vue


你可能感兴趣的:(vuex中 this.$store.dispatch() 与 this.$store.commit()方法的区别)