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 相关文章推荐
js实现DIV的一些简单控制
Jun 04 Javascript
JS 有趣的eval优化输入验证实例代码
Sep 22 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
Jun 12 Javascript
JavaScript实现常用二级省市级联下拉列表的方法
Mar 25 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
Mar 26 Javascript
详细分析JavaScript变量类型
Jul 08 Javascript
Node.js 条形码识别程序构建思路详解
Feb 14 Javascript
JS实现微信弹出搜索框 多条件查询功能
Dec 13 Javascript
vue中mint-ui的使用方法
Apr 04 Javascript
Vue如何实现响应式系统
Jul 11 Javascript
vue 翻页组件vue-flip-page效果
Feb 05 Javascript
Node.js path模块,获取文件后缀名操作
Nov 07 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之第二天
2006/10/09 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
laravel 执行迁移回滚示例
2019/10/23 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
js综合应用实例简单的表格统计
2013/09/03 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
gulp教程_从入门到项目中快速上手使用方法
2017/09/14 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
python从入门到精通(DAY 2)
2015/12/20 Python
pycharm安装图文教程
2017/05/02 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
2019史上最全Database工程师题库
2015/12/06 面试题
软件测试工程师笔试题带答案
2015/03/27 面试题
机电专业大学生职业规划书范文
2014/02/25 职场文书
网络信息安全承诺书
2014/03/26 职场文书
我的大学生活演讲稿
2014/04/25 职场文书
希特勒经典演讲稿
2014/05/19 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
毕业论文致谢信
2015/05/14 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python