Vuex

一.什么是Vuex:
简单的说,Vuex就是一个状态管理器,管理的是全局的状态数据,它可以被所有组件所调用的。所以,当我们需要在多个组件上使用同一组数据时,Vuex会起到很关键的作用。
二.Vuex的组成:

若这个js文件叫shoppingCart.js,后面会用到
在这里插入图片描述

1.state:存放数据的地方,只是存放数据
const state={
	products=[
		{id:1,name:"汽车",price:299999}
	]
}

2.getters:读取state数据的地方,类似于组件中的computed,起计算的作用

const getters={
	getProducts(){
		return state.products
	}
}

3.mutations:用于修改state内部数据值的地方,建议只做修改,不要进行逻辑处理,是同步处理

const mutstions={
	addProducts(state,payload){//向products数组中添加一个payload对象数据
		state.products.push(payload)
	}
}
注:修改vuex中state数据,只能在mutations中修改,不能在组件或路由中直接修改,可提交到vuex的action中进行修改。

4.actions:处理业务逻辑,提交mutations

为什么有了mutations修改state里的数据,我们还需要actions呢?不是多此一举吗?答案是我们必须分为两步来做,因为mutations中的提交为同步提交,虽然说我们可以在mutations中添加逻辑,来直接修改state数据,但若我们某个地方的数据发生错误,我们无法找到是在哪里发生的错误,着就会造成很大的麻烦。而actions位异步处理,返回的是一个promise对象,能通过debug去记录VUEX任何修改数据的函数。所以最好分开来调用。

const actions={
	addPro({commit},payload){
		const pro=state.products.find(el=>el.id===payload.id)//查询products中是否已存在该产品
		if(!pro){
			commit('addProducts',payload)
			retuen 0//表示添加成功	
		}else{
			return -1//表示商品已存在
		}
	}
}
注:在组件中调用actions中的方法:this.$store.dispacth(‘shoppingCart/addProducts’,this.products)

5.导出该js文件

export default{
	namespaced:"true",//设置命名空间为true,默认为false,可将该js中的变量锁定在该文件中,如查询shoppingCart文件中的state:this.$store.state.shoppingCart.products
	state,
	getters,
	mutations,
	actions
}

6.modules:用于将多个导出文件合并成一个store:

import Vue from 'vue'
import Vuex from 'vuex' 
import login from './modules/login'
import register from './modules/register'
import products from './modules/products'
import shoppingCart from './modules/shoppingCart'

Vue.use(Vuex)


export default new Vuex.Store({
    modules:{
        login,
        register,
        products,
        shoppingCart
    }
})

在这里插入图片描述

将modules中的js文件导入index.js中,合并成一个store

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值