action mutation 调用_Vuex之mutation和action
mutation
同步操作
基本使用
创建文件
创建 client/store/mutations/
创建 client/store/state/mutations.js
声明 mutations
// mutaions.js
export default {
updateCount (state, num) {
state.count = num
}
}
引用 mutations
// store.js
import defaultState from './state/state'
import mutations from './mutations/mutations' // 引用
import getters from './getters/getters'
export default () => {
return new Vuex.Store({
state: defaultState,
mutations, // 注入
getters
})
}
使用 mutaions
{{count}}
export default {
mounted () {
let i = 1
setInterval(() => {
this.$store.commit('updateCount', i++)
}, 1000)
},
computed: {
...mapState({
counter: (state) => state.count
})
}
}
mutations传多个参数
commit 方法只能接受两个参数,第一个参数是 state,第二参数,以对象的形式传。
// app.vue
export default {
mounted () {
console.log(this.$store)
let i = 1
setInterval(() => {
this.$store.commit('updateCount', {
num: i++,
num2: 2
})
}, 1000)
}
}
export default {
updateCount (state, { num, num2 }) { // es6 解构
console.log(num2) // 打印出 2
state.count = num
}
}
store 使用规范
我们可以不通过 commit 来进行操作,但官方推荐都通过 commit,所以尽量杜绝不通过 commit 的操作。
通过设置生产环境的严格模式,来进行代码规范。
import Vuex from 'vuex'
import defaultState from './state/state'
import mutations from './mutations/mutations'
import getters from './getters/getters'
const isDev = process.env.NODE_ENV === 'development' // 注意,正式环境不能使用 strict
export default () => {
return new Vuex.Store({
strict: isDev, // 添加严格模式
state: defaultState,
mutations,
getters
})
}
actions
异步操作
基本使用
创建文件
创建 client/store/actions/
创建 client/store/state/actions.js
声明 actions
// actions.js
export default {
updateCountAsync (store, data) {
setTimeout(() => {
store.commit('updateCount', {
num: data.num
})
}, data.time)
}
}
引用 actions
// store.js
import defaultState from './state/state'
import mutations from './mutations/mutations' // 引用
import getters from './getters/getters'
import actions from './actions/actions'
export default () => {
return new Vuex.Store({
state: defaultState,
mutations,
getters,
actions // 注入
})
}
使用 actions
{{count}}
export default {
mounted () {
this.$store.dispatch('updateCountAsync', {
num: 5,
time: 2000
})
},
computed: {
...mapState({
counter: (state) => state.count
})
}
}
简写帮助方法
mapMutations 和 mapActions
import {
mapState,
mapGetters,
mapActions,
mapMutations
} from 'vuex'
export default {
mounted () {
let i = 1
setInterval(() => {
this.updateCount({ // 调用方式也变了
num: i++,
num2: 2
})
}, 1000)
this.updateCountAsync({ // 调用方式也变了
num: 5,
time: 2000
})
},
computed: {
...mapState({
counter: (state) => state.count
}),
...mapGetters(['fullName'])
},
methods: {
...mapActions(['updateCountAsync']), // actions 简写
...mapMutations(['updateCount']) // mutations 简写
}
}
action mutation 调用_Vuex之mutation和action相关推荐
- action mutation 调用_Vuex源码学习(六)action和mutation如何被调用的(前置准备篇)...
module与moduleCollection你一定要会啊!Vuex源码学习(五)加工后的module 在组件中使用vuex的dispatch和commit的时候,我们只要把action.mutati ...
- mutations vuex 调用_Vuex源码学习(六)action和mutation如何被调用的(前置准备篇)...
前言 Vuex源码系列不知不觉已经到了第六篇.前置的五篇分别如下: 长篇连载:Vuex源码学习(一)功能梳理 长篇连载:Vuex源码学习(二)脉络梳理 作为一个Web前端,你知道Vuex的instal ...
- action mutation 调用_浅谈vuex之mutation和action的基本使用
我们要实现的很简单,就是点击+1的count加一,点击-1的时候count-1 一.mutation 在vue 中,只有mutation 才能改变state. mutation 类似事件,每一个mu ...
- java如何在一个Action中调用另外一个Action
java如何在一个Action中调用另外一个Action /*** 通过远程调用其他系统里的URL获取数据的方法** @param path 需要调用远程的URL地址* @return 返回的是调用U ...
- mutations vuex 调用_Vuex源码解析
" 为方便理解,本文中提及的store为Store的实例,promise为Promise的实例 源码的大致实现流程如下图: 在正式阅读Vuex源码之前,我们先实现一个简易版的Vuex来帮助我 ...
- mutations vuex 调用_vuex 怎么在actions中调用mutations中的函数?
1.流程顺序 "相应视图->修改State"拆分成两部分,视图触发Action,Action再触发Mutation. 2.角色定位 基于流程顺序,二者扮演不同的角色. Mut ...
- mutations vuex 调用_vuex的mutations与actions的使用测试
vuex的mutations与actions的使用测试 这里不谈vuex如何使用等问题,只讨论 mutaions 中定义的方法需要在 actions 中进行转发一下吗? mutations: { mu ...
- android action pick,Intent中各种常见的Action
1 Intent.ACTION_MAIN String: android.intent.action.MAIN 标识 Activity 为一个程序的开始.比较常用. Input:nothing Out ...
- Struts2通配符映射/Struts action name=/*/* method={2} class=com.jxc.action.{1}Action result
struts2的关于method="{1}"意思详解 <action name= "Login_* " method= "{1} &qu ...
最新文章
- 为了故意刁难AI,科学家们制造了这1200个问题,超强AI被“打回原形”
- linux 服务器 安装网卡驱动,linux下安装编译网卡驱动的方法
- raid配置ssd为缓存_超融合硬件选配推荐指南 | 第三期:SSD 与 HDD
- threejs渲染器剔除模式
- ndoe.js实战之开发微博第一讲之工具准备
- HDOJ 4734 数位DP
- elementui中给input框赋值成功后input框不能进行编辑问题
- 如何在微博侧栏中加入自己的微博[js]
- python编程入门教学视频-Python编程入门电子书及视频教程-非常详细『强烈推荐』...
- 高项考试-必背的知识点
- set工具集的基础使用
- Godaddy域名解析设置
- 精心整理了50个数据源网站(建议收藏)
- 全球排名前10位的广告公司
- 嘉曼服饰上市破发,大跌16%:公司市值37亿 刘溦家族色彩浓厚
- 2020寒假【gmoj2417】【Loan Repayment】【二分】
- 修改密码后,mac的邮箱登录不上(已解决)
- etax导入账户不让勾选_勾选认证详解及常见问题分析
- WEB前端网页设计 HTML网页代码 - 表单参数
- GD32串口通信注意事项
热门文章
- 关于学连锁经营管理专业的问题_百度知道
- 计算机与u盘连接使用,独家分享:教你解决U盘使用中出现的各种问题
- 如何将u盘内容输进计算机,如何把U盘当做电脑的开机钥匙, 更好提高电脑安全...
- Win10升级11错误代码80070002/无法判断你的电脑是否有足够空间继续安装windows11
- Himawari8-9数据下载和预处理教程
- ❤️❤️爆肝3万字整理小白入门与提升分布式版本管理软件:Git,图文并茂(建议收藏)❤️❤️
- 搭建外卖服务器系统,本地外卖系统如何更好的搭建
- 绿光皮秒切割机_皮秒激光切割加工
- 【mysql】日期与时间类型
- 智慧工地大型机械监测北斗定位工业终端解决方案