vuex的深度理解

Vuex是什么

Vuex是一个专为Vue.js应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证以一种可预测的方式发生变化。

为什么用vuex

原先数据需要保存到各自vue实例对象的data中,当使用vuex之后,就可以将data中的数据集中管理到vuex中。让vue中渲染页面的工作和与后台交互的逻辑性的工作分离。使得的代码更加整洁。

vuex的数据维护与vue的数据维护的对比

在vue中,数据是维护在data中的。而转交给vuex,数据是存储在state中的。

vuex的核心概念及深度理解

应用vuex时,首先需实例化。

let store = new Vue.Store({
	state:{},	//用于存储数据状态
	getters:{},	//获取器,类似于vue中computed,可存储从store中的state中派生出的一些状态,如:customers.length
	mutations:{},	//突变,是vuex中唯一可以修改state值的机制,并且这种修改是同步的,不允许包含异步的代码
	actions:{}		//动作,是vuex中唯一可以包含异步操作【异步操作的同步化】不能直接修改state中的值,但是可以通过提交突变的方式修改state中的值
)}
state:是一个对象,用于存储数据状态,使用时,可通过两种方式

1.通过状态机实例对象直接访问

store.state.customers

2.通过计算属性映射(在vue实例中访问)

new Vue({
	el:"",
	store,
	data:{},
	computed:{
		customers:function(){
			return this.$store.state.customers;
			}
		}
	})
mutation:唯一修改state值的机制,并且只能是同步操作。
state:{
	customers:[]
}
mutations:{
	refreshCustomers(state,customers){
	}
}	//state是vue实例化时系统传递给突变的,customers属于改突变一个载荷对象,即参数。

使用:store.commit(“refreshCustomers”,[1,2,3])

action:封装异步操作,不能直接更新state,必须借助mutation来进行更新
//不传参数
actions:{
	async findAllCutomers(context){
		let response = await axios.get();
		context.commit("refreshCustomer",response.data.data)
	},
	//传参数 id
	async deleteCustomerById(context,payload){
		let response = await axios.get("",payload);
		context.dispatch("findAllCustomers")
	}
}
//context是一个与store对象解构相似的对象,包含了commit、dispatch、state

使用:store.dispatch(actionName,payload)

模块化
let customer = {
		 		namespaced:true,
		 		state:{
		 			list:[],
		 			visible:false
		 		},
		 		getters:{

		 		},
		 		mutations:{

		 		},
		 		actions:{

		 		}
		 	},
		 	let category = {
		 		namespaced:true,
		 		state:{
		 			list:[],
		 			visible:false
		 		},
		 		getters:{

		 		},
		 		mutations:{

		 		},
		 		actions:{
		 		
		 		}
		 	}

		 	let store = new Vuex.Store({
		 		modules:{
		 			customer,
		 			category
		 		}
		 	})

		 	new Vue({
		 		computed:{
		 			...Vuex.mapState("customer",["list"])
		 		}
		 	})


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vuex是一个专为Vue.js应用程序开发的状态管理模式。它主要用于管理应用程序的状态,其中包括数据的获取、修改和同步,以及在不同组件之间共享数据。 Vuex的核心概念主要有以下四个: 1. State(状态):State是存储应用程序中所有组件共享的数据的地方,可以将它看作是应用程序的单一源 of truth(唯一数据源)。它类似于组件中的data属性,但是可以被多个组件共享。 2. Mutations(变更):Mutations是用来修改State的唯一方式。它们类似于事件,每个Mutation都有一个字符串类型的事件类型和一个回调函数。在回调函数中,我们可以对State进行修改。Mutations只能进行同步操作。 3. Actions(动作):Actions用于异步修改或触发Mutations。它们类似于Mutations,但是可以执行异步操作,并且可以包含任意的业务逻辑。Actions通过提交Mutations来间接修改State。 4. Getters(获取器):Getters用于从Store中获取State的派生状态,类似于计算属性。它们可以接收State作为第一个参数,并且可以接收其他Getters作为第二个参数,从而实现对State的复杂统计或过滤。 Vuex的使用步骤如下: 1. 安装Vuex:在Vue项目中使用npm或者yarn安装Vuex。 2. 创建一个Store:通过创建一个Store实例来管理应用程序的状态。在Store中定义State、Mutations、Actions和Getters。 3. 在Vue组件中使用State:通过this.$store.state来访问State中的数据。 4. 在Vue组件中使用Mutations:通过commit方法来触发Mutations中的回调函数,从而修改State。 5. 在Vue组件中使用Actions:通过dispatch方法来触发Actions中的回调函数,从而间接修改State。 6. 在Vue组件中使用Getters:通过this.$store.getters来访问Getters中的派生状态。 通过合理使用Vuex,我们可以更好地管理Vue.js应用程序的状态,并且实现组件间的数据共享和通信。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值