Vuex简单使用学习一(State,Mutations)

最近在做一个vue项目发现一些组件间的存储有些混乱,抽了1.2天时间学习了Vuex做下学习记录

介绍Vuex几个参数

State         储存初始化数据

Getters      对State 里面的数据二次处理(对数据进行过滤类似filter的作用)比如State返回的为一个对象,我们想取对象中一个键的值用这个方法

Mutations   对数据进行计算的方法全部写在里面(类似computed) 在页面中触发时使用this.$store.commit('mutationName') 触发Mutations方法改变state的值

Actions      处理Mutations中已经写好的方法 其直接触发方式是 this.$store.dispatch(actionName)

安装 

npm install vuex --save

在main.js里面引用

import Vuex from 'vuex' 
Vue.use(Vuex)
const store=new Vuex.Store({
	state:{
		count:0
	},
	mutations:{
		increment(state){
			state.count++;
		},
		decrease(state){
			state.count--;
		}
		
	}
	
})
new Vue({
  el: '#app',
  router,
  store:store,
  template: '<App/>',
  components: { App},
})

 

store是vuex的配置

仓库store包含了应用数据(状态)和操作的过程

任何组件使用同一store的数据时,只要store的数据变化,对应的组件也会立即更新

假如实现一个计时器,定义一个数据count初始是0

在任何组件调用直接通过$store.state.count读取

在组件内,来之store的数据只能读取,不能手动改变,改变store中数据的唯一途径就是显示地提交mustations

mustations是Vuex的第二个选项可以直接改变store里的数据,

在组件内调用通过this.$store.commit方法来执行mustations,例如this.$store.commit('increment')

mustations还可以接受第二个参数可以是字符串,数字或者对象类型

mutations:{
		increment(state,n=1){
			state.count+=n;
		}
		
	}

ps:ES6语法当没有传参是n默认为1

this.$store.commit('increment',5)

也可以提交一个对象

mutations:{
		increment(state,params){
			state.count+=params.count;
		}
		
	}

this.$store.commit({

type:'increment',

count:20

})

mustations中尽量不要异步操作数据,如果异步操作数据组件在commit后数据不能立即改变,而且不知道什么时候会改变

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值