当前位置: 首页 > news >正文

vue提交mutation_Vuex之mutation

我们已经可以在组建中使用store里面的数据了,那么我们要怎么修改这个数据呢?vuex提供了mutation,官网上说:

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数。

简单来说mutations里面是一个一个的方法,参数第一个就是state:

export default {

scoreChange(state){

state.score++;

}

}

复制代码

调用的话官网说:

你不能直接调用一个 mutation handler。这个选项更像是事件注册:“当触发一个类型为 increment 的 mutation 时,调用此函数。”要唤醒一个 mutation handler,你需要以相应的 type 调用 store.commit 方法,简单来说就是:

this.$store.commit('scoreChange');

官网所说的type就是mutation里面定义的方法名字。

你可以向 store.commit 传入额外的参数,即 mutation 的 载荷(payload):

export default {

scoreChange(state, num){

state.score += num;

}

}

复制代码

调用:

this.$store.commit('scoreChange', 10);

官网有几个建议:

参数最好是一个对象。

Mutation 需遵守 Vue 的响应规则,具体可以看官网。

使用常量替代 Mutation 事件类型,本人不是很喜欢,有兴趣的可以自己去看看。

Mutation 必须是同步函数,但其实试过的都知道就算是异步函数也是可以实现状态的修改,那为什么要都是同步的呢?主要是为了调试,使用devtools的时候采用异步不好追踪数据。一定要注意,mutation不能是异步最主要的就是为了调试,而不是不能修改状态。

辅助函数mapMutations:

引入:import { mapState, mapMutations } from 'vuex'

两种方式注入:

...mapMutations([ 'scoreChange',]),

...mapMutations({ add: 'scoreChange'})

调用:

this.add(10);

this.scoreChange(10);

欢迎关注Coding个人笔记 公众号

相关文章:

  • hmcl手机版下载_HMCL启动器
  • python二级成绩查询入口官网_python爬虫实战之模拟正方教务系统登录查询成绩
  • python速查app_中国大学MOOC的APP2020年用Python玩转数据题目答案
  • 导出 schema_第27问:information_schema.columns 表上做查询慢,为什么?
  • 单相交流调压matlab_电力线路工熟知单相、三相变压器原理详解
  • 陈硕智能指针线程安全_「C++基础篇」智能指针 auto_ptr/unique_ptr/shared_ptr
  • easyui是否容易上手_bootstrap 和 jQueryEasyUI 哪个做后台管理系统更好一些?
  • column分栏布局只是文字布局吗_写给自己看的CSS columns分栏布局教程
  • 定时备份mysql脚本_自动定时备份 mysql 数据库 的 shell 脚本
  • mysql存储xml_mysql存储xml数据 mysql和sql server
  • 使用php mysql js实现聊天功能_php实现简单聊天功能
  • 帝国cms与mysql数据库_如何使用帝国CMS自带的数据库类
  • mysql所有选修课程都及格_MySQL 练习题目 二刷 - 2019-11-4 5:55 am
  • c3p0连接池配置 mysql_C3P0连接池配置详解 + 数据库主从配置
  • mysql查看字符出现次数_mysql 查找一个列中,一个字符出现的次数
  • 分享一款快速APP功能测试工具
  • 收藏网友的 源程序下载网
  • 【笔记】你不知道的JS读书笔记——Promise
  • 2017届校招提前批面试回顾
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Docker 笔记(2):Dockerfile
  • Facebook AccountKit 接入的坑点
  • Idea+maven+scala构建包并在spark on yarn 运行
  • iOS小技巧之UIImagePickerController实现头像选择
  • JavaScript异步流程控制的前世今生
  • Linux各目录及每个目录的详细介绍
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 微信小程序设置上一页数据
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 正则学习笔记
  • 《天龙八部3D》Unity技术方案揭秘
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • # Apache SeaTunnel 究竟是什么?
  • #define
  • #git 撤消对文件的更改
  • #预处理和函数的对比以及条件编译
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (二)构建dubbo分布式平台-平台功能导图
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)Oracle存储过程编写经验和优化措施
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • ***检测工具之RKHunter AIDE
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .Net面试题4
  • /proc/stat文件详解(翻译)
  • [ C++ ] STL_list 使用及其模拟实现
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [16/N]论得趣