vuex基础用法

1 篇文章 0 订阅
本文详细介绍了Vuex的state、mutations和actions的使用。state用于存储应用的共享数据,mutations则用于同步更新state,遵循单一修改原则。actions则处理异步操作,返回Promise,常用于延迟执行如计数增加、减少和指数运算等操作。通过$store.commit和$store.dispatch分别触发mutations和actions。
摘要由CSDN通过智能技术生成

state

用于存储共享数据

Vuex.Store({
	state: {
		count: 0
	}
})

//xxx.vue 文件中使用
this.$store.state.count
//更改
this.$store.state.count = 1; //不推荐

mutations

需要注意的是vue 建议mutations处理同步函数,因为方便devtool监听其变化,以便更好的调试开发
更严格的用法是mutations不允许出现副作用函数

Vuex.Store({
	state: {
		count: 0
	},
	mutations: {
		INCREASE(state) {
			state.count++;
		},
		DECREASE(state) {
			state.count--;
		},
		POWER(state, payload) {
			//payload --> 负载,载荷 调用时附带的参数
			state.count **= payload;
			//通常可以将payload写成一个对象 {type: "POWER", number: 3};
			// state.count **= payload.number;
		}
	}
})

//在文件中使用
this.$store.commit("INCREASE");
this.$store.commit("INCREASE"); // count = 2
this.$store.commit("POWER", 3); //count = 8 或者 对象写法
this.$store.commit({type: "POWER", number: 3});

actions

通常用于异步,返回一个Promise对象

function delay(duration) {
	return new Promise(resolve => {
		setTimeout(()=> {
			resolve();
		}, duration)
	})
}
Vuex.Store({
	state: {
		count: 0
	},
	mutations: {
		INCREASE(state) {
			state.count++;
		},
		DECREASE(state) {
			state.count--;
		},
		POWER(state, payload) {
			//payload --> 负载,载荷 调用时附带的参数
			state.count **= payload;
			//通常可以将payload写成一个对象 {type: "POWER", number: 3};
			// state.count **= payload.number;
		},
		MULTIPLE_NAME() {}
	},
	actions: {
		//通常写法
		async increase({ commit }) {
			await delay(1000);
			commit("INCREASE");
		},
		async decrease({ commit }) {
			await delay(1000);
			commit("DECREASE");
		},
		async power({ commit }, payload) {
			//payload的支持方式与mutation相同
			await delay(1000);
			commit("POWER", payload); //payload未传对象
			// commit("POWER", payload.number); //payload传带有type对象
		},
		multipleName() {}
	}
})
//文件中调用
this.$store.dispatch("increse"); // 等待一秒  1  
this.$store.dispatch("increse"); // 等待一秒  2 
this.$store.dispatch("power", 3); //等待一秒  8 或者带type的对象写法
this.$store.dispatch({type: "power", number: 3})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

合法的咸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值