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 相关文章推荐
javascript 动态添加事件代码
Nov 30 Javascript
javascript事件问题
Sep 05 Javascript
Jquery ui css framework
Jun 28 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
Aug 13 Javascript
JavaScript运算符小结
Jun 03 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
Oct 30 Javascript
jQuery基于扩展实现的倒计时效果
May 14 Javascript
微信小程序 图片绝对定位(背景图片)
Apr 05 Javascript
详解vue-router基本使用
Apr 18 Javascript
移动端(微信等使用vConsole调试console的方法
Mar 05 Javascript
JavaScript模块管理的简单实现方式详解
Jun 15 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
Jul 06 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 什么是PEAR?(第三篇)
2009/03/19 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
PHP开发的一些注意点总结
2010/10/12 PHP
跟我学Laravel之快速入门
2014/10/15 PHP
php截取字符串函数分享
2015/02/02 PHP
php浏览历史记录的方法
2015/03/10 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
JavaScript confirm选择判断
2008/10/18 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
微信小程序提交form操作示例
2018/12/30 Javascript
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
Python中逗号的三种作用实例分析
2015/06/08 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
高二物理教学反思
2014/02/08 职场文书
cf搞笑广告词
2014/03/14 职场文书
新员工入职欢迎词
2015/01/23 职场文书
webpack的移动端适配方案小结
2021/07/25 Javascript
详解pytorch创建tensor函数
2022/03/22 Python
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle