初识vuex

一、什么是vuex

1.在大型,特大型,vue项目中做数据统一管理的
2.在vuex 中存储的数据,每个组件都可以引用到vuex中的数据发生变化,引用该数据的组件会自动更新

二、什么数据可以存储在vuex

1.如果一个数据,需要在多个组件中重复使用,可以吧数据存放在vuex的store中
2.用户数据、购物车数据等

三、Store

安装完vuex就可以创建storel

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
  		//定义vuex中的数据
		cartNum: 10,
  },
  getters: {
  },
  mutations: {
  },
  actions: {
  },
  modules: {
  }
})

创建完毕后可以通过 store.state 来获取状态对象,并通过 store.commit 方法触发状态变更:

{{$store.state.cartNum}}

四、mutations

定义修改数据的方法

mutations: {
		SET_CART_NUM(state,data){
			state.cartNum = data;
		}
	},
<button @click="$store.commit('SET_CART_NUM',100)">修改为100</button>
<button @click="$store.commit('SET_CART_NUM',$store.state.cartNum+1)">修改为加1</button>

$store.commit 是专门用来调用 store中的muations方法的

五、actions

定义异步,网络延迟等方法(只能调用mutations,不能直接修改state)

actions: {
		getCartNum(context,data){
			//可以执行网络请求,等待延迟
			setTimeout(()=>{
				//等待4秒后执行mutations的SET_CART_NUM方法
				context.commit('SET_CART_NUM',data)
				//修改了cartNum的值为参数data
			},4000)
		}
	},
<button @click="$store.dispatch('getCartNum',50)">延迟修改为50</button>
<button @click="$store.dispatch('getCartNum',30)">延迟修改为30</button>

$store.dispatch 是专门用来调用store中的actions方法

六、getters

从现有的数据计算出新的数据

getters: {
		fee:function(state){
			return state.cartNum*0.5;
		}
	},
<p>总价:{{$store.getters.fee}}</p>

在组件中调用$stroe.getters.fee

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值