Vuex

本文深入解析Vuex,一种Vue.js应用的状态管理模式,涵盖其核心概念如State、Mutation、Action与Getter,详解如何安装配置及高效利用Vuex进行组件间数据共享,提升开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是Vuex?

Vuex是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间的数据的共享

2.使用vuex统一管理状态的好处

1.能够在vuex中集中管理共享的数据,易于开发和后期维护
2.能够高效实现组件之间的数据共享,提高开发效率
3.存储在vuex中的数据都是响应式的,能够实时保持数据与页面的同步

3.什么样的数据适合存储到vuex中

一般情况下,只有组件之间的共享数据才有必要存储到vuex中,对于组件中的私有数据,就存储在组件自身的data中

4.vuex的基本使用

1.安装vuex的依赖
npm install vuex --save
2.导入vuex包
import Vuex from 'vuex'
Vue.use(Vuex)
3.创建store对象

 const store = new Vuex.store({
 	// state中存放全局共享的数据
 	state: {count: 0}
 })

4.将store对象挂载到vue示例中

new Vue({
	el: '#app',
	........
	store
})

5.vuex的核心概念

5.1 State

State提供唯一的公共数据源,所有共享的数据都要统一放到Store的State中存储

export default new Vuex.Store({
state: {
    count: 0
   }
})

取出count的方式一
this.$store.state.count
但是值得注意的是在template中可以去掉this,直接使用$store.state.count
取出count的方式二

//1,引入mapState
(1)import { mapState } from "vuex";
 //2,调用mapState
  ...mapState(["count"]),
  //3,在template页面上使用count 
  {{count}}

5.2 Mutation

Mutation用于变更Store中的数据
1.只能通过Mutation来变更Store中的数据,不可以直接操作Store中的数据
2.这种方式虽然操作起来繁琐了一些,但是可以集中监控所有数据的变化
Mutation更改Store中数据的使用

5.2.1 触发mutations函数的方式一

一:首先在mutations中定义一个函数

   export default new Vuex.Store({
	  state: {
	    count: 0
	  },
	  // 定义Mutation
	  mutations: {
	    add(state) {
	  	 // 变更状态
	   state.count++
	 }
 });
___________________________________________________________
//触发Mutation
this.$store.commit('add');

只有Mutation中的函数才有权力修改Mutation中的数据

5.2.2 可以在触发mutations的时候传递参数

mutations: {
	addN(state,step) {
		// 变更状态
		state.count += step;
	}
}
//触发mutation
this.$store.commit('addN',3);

5.2.3 触发mutations的第二种方式

1.从vuex中按需导入mapMutations函数
import { mapMutations } from 'vuex'
2. 将指定的mutations函数,映射为当前组件的methods函数

methods: {
	...mapMutations(['add','addN']);
}
  methods: {
    ...mapMutations(["sub"]),
    btnHandle1() {
      this.sub();
   }
 }

5.2.4 Action用于处理异步任务,触发Action的第一种方式

如果通过异步操作变更数据,必须通过Action,而不能使用Mutation,但是在Action中还是要通过触发Mutation的方式间接变更数据
在mutations中不要使用异步函数

//定义Action
const store = new Vuex.store({
	mutations: {
		add(state) {
			state.count ++;
		}
	},
	actions: {
		addAsync(context) {
			setTimeout(()=> {
				context.commit('add')
			},1000)
	}
}
})
//触发Action
this.$store.dispath('addAsync');

5.2.5 触发Action的第二种方式

// 1.在actions中定义要触发的mutations
  subAsync(context) {
      setTimeout(() => {
        context.commit('sub');
      }, 1000);
}
// 2.按需导入mapActions
import {  mapActions } from "vuex";
// 使用
 ...mapActions(["subAsync"]),
  btnHandle2() {
	  this.subAsync();
},

6. Getter

Getter用于对Store中的数据进行加工处理形成新的数据
1.Getter可以对Store中已有的数据加工处理之后形成新的数据,类似Vue的计算属性
2.Store中数据发生变化。Getter中的数据也会跟着发生变化

const store = new Vuex.store({
	state: {
		count: 0
	},
	getters: {
		showNum: state => {
			return '当前最新的数据是【' + state.count + '】'
		}
	}
})

6.1 使用Getters的方式一

this.$store.getters.showNum

6.2 使用Getters的方式二

...mapGetters(["showNum"])

内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制中的应用。书中提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制问题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书中还涉及了执行器饱和、冗余解析等问题,并提出了新的冗余解析方法,验证了所提方法的有效性和优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学和动态神经网络领域的学术界和工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制问题,特别是在存在输入约束和系统动力学的情况下;②解决带有参数不确定性的线性和非线性系统的跟踪控制问题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制中的应用;④设计和验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书中不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真和实验进一步验证书中提出的理论和技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值