Vuex mutitons和actions初使用详解


Posted in Javascript onMarch 04, 2019

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);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 将元素显示在屏幕的中央的代码
Feb 27 Javascript
JQuery小知识
Oct 15 Javascript
jQuery实现隔行背景色变色
Nov 24 Javascript
Javascript实现颜色rgb与16进制转换的方法
Apr 18 Javascript
jQuery实现图像旋转动画效果
May 29 Javascript
javascript深拷贝(deepClone)详解
Aug 24 Javascript
js实现tab选项卡切换功能
Jan 13 Javascript
微信小程序实现简单input正则表达式验证功能示例
Nov 30 Javascript
微信小程序使用request网络请求操作实例
Dec 15 Javascript
浅谈vue引入css,less遇到的坑和解决方法
Jan 20 Javascript
小程序云函数调用API接口的方法
May 17 Javascript
layui监听单元格编辑前后交互的例子
Sep 16 Javascript
JS重学系列之聊聊new操作符
Mar 04 #Javascript
jQuery实现的导航条点击后高亮显示功能示例
Mar 04 #jQuery
ES10 特性的完整指南小结
Mar 04 #Javascript
node.js使用express框架进行文件上传详解
Mar 03 #Javascript
微信小程序新手教程之启动页的重要性
Mar 03 #Javascript
微信小程序新手教程之页面打开数量限制
Mar 03 #Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
Mar 02 #Javascript
You might like
理解php原理的opcodes(操作码)
2010/10/26 PHP
yii框架源码分析之创建controller代码
2011/06/28 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
php die()与exit()的区别实例详解
2016/12/03 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
PHP经典设计模式之依赖注入定义与用法详解
2019/05/21 PHP
javascript字符串拼接的效率问题
2010/12/25 Javascript
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
jquery 根据name名获取元素的value值
2015/02/27 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
JavaScript 隐性类型转换步骤浅析
2018/03/15 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
基于ssm框架实现layui分页效果
2019/07/27 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
python多进程实现进程间通信实例
2017/11/24 Python
Python中的取模运算方法
2018/11/10 Python
Python 中@property的用法详解
2020/01/15 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
构建高效课堂实施方案
2014/03/13 职场文书
党的群众路线教育实践活动总结报告
2014/07/03 职场文书
精神病医院见习报告
2014/11/03 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
关于做家务的心得体会
2016/01/23 职场文书