Vuex 基础

Vuex是一个专为Vue.js应用程序开发的状态管理模式,用于集中管理组件状态。它提供getter、mutation和action来处理数据,通过mapState、mapGetters、mapMutations和mapActions方便在组件间交互。Mutation用于同步更新状态,Action用于异步操作。Vuex还支持模块化,允许创建独立的命名空间,并提供了严格模式以防止未授权的状态更改。在实际应用中,Vuex帮助开发者更好地组织和维护大型Vue项目的复杂状态管理。

Vuex

作用:为Vue.js开发的状态管理工具,集中式存储管理应用的所有组件的状态,实现不同组件之间数据传递。npm i vuex --save

store

store中的数据可以共享给其他任意位置,在调用时使用store.state或this.$store.state访问store中的数据。单个数据可以使用computed返回某个状态,多个数据需引入mapState辅助函数生成计算属性

//store.js
export default new Vuex.store({
	state:{
	  count:0,
	  msg:'hello'
	},
	getter:{
	  reverseMsg(){ return state.msg.splice('').reverse().join('') }
	}
})
//调用时
import { mapState, mapGetters, mapMutations } from 'vuex'
export default {
  computed:{
    mapState({
      count: state => store.state
    })
  }
}

当映射的计算属性的名称与 state 的子节点名称相同时,可以给 mapState 传一个字符串数组。

computed:{
  mapState(['count'])//// 映射 this.count 为 store.state.count
}

mapState 函数返回的是一个对象,使用对象展开运算符将多个对象合并为一个,将最终对象传给 computed 属性

computed:{
  ...mapstate(['count','msg'])
  ...mapState({num:'count',message:'msg'})//修改映射计算属性的名字,count生成的计算属性名称为num
}

Getter

可以从 store 中的 state 中派生出一些状态,例如对列表进行过滤并计数。与state相同也可使用重命名

computed:{
 ...mapGetters(['reverseMsg'])
}

Mutation

唯一可以修改Vuex中store状态的方法,不能处理异步操作,按照调用顺序或者commit提交的顺序触发事件。调用mutition方法需要使用store.commit 方法。利用actions属性可以实现异步处理

// Vuex文件
const store = new Vuex.Store({
  state: {
    count: 1
  },
  mutations: {
    increment (state,payload) {
      // 变更状态
      state.count+=payload
    }
  }
})
// 调用时
store.commit('increment',10)
//或在method中...mapMutation(['increment')]后increment(3)

Mutation 操作数据之前必须保证store中存在初始化好的属性,如果需要给store中添加新属性用Vue.set(obj, 'newProp', 123)设置

Action

通过action 提交mutation,而不是直接修改store中的数据,action中的需要传入context,内部包含commit,dispatch,state等方法,可将commit等方法解构出来使用

 actions: {
    increment (context) {
      context.commit('increment')
    }
  }
  store.dispatch('increment')//触发action
  store.dispatch({
	type:'incrementAsync',
	amount:10
	})  //通过对象方式分发

context 与 store功能完全相同,所以调用context.commit方法提交mutation,通过store.dispatch触发action

Moudle

Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块。
调用模块中的state时需要加上模块名称,模块中的Mutation和Action与store中的Mutation和Action一样都在_Mutation和_Actions中无需添加模块名称,store和模块中的Mutation和Action重名则都会被调用。可开启模块中的命名空间。

// 定义的模块内部导出时添加namespace属性。
export default {
  namespace: true,
  state,
  getters,
  mutations,
  actions
}
//调用时在mapMutation和mapState中书写定义命名空间
...mapState('引入模块的名称',['模块的数据'])
methods:{
  ...mapMutation('引入的模块名称',['模块中的方法'])
  this.模块中的方法(['传入的参数'])
}

严格模式

vuex提供了严格模式使用strict: true 限制对store中的数据进行脏操作,会报错数据发生修改。

【2025年10月最新优化算法】混沌增强领导者黏菌算法(Matlab代码实现)内容概要:本文档介绍了2025年10月最新提出的混沌增强领导者黏菌算法(Matlab代码实现),属于智能优化算法领域的一项前沿研究。该算法结合混沌机制与黏菌优化算法,通过引入领导者策略提升搜索效率和全局寻优能力,适用于复杂工程优化问题的求解。文档不仅提供完整的Matlab实现代码,还涵盖了算法原理、性能验证及与其他优化算法的对比分析,体现了较强的科研复现性和应用拓展性。此外,文中列举了大量相关科研方向和技术应用场景,展示其在微电网调度、路径规划、图像处理、信号分析、电力系统优化等多个领域的广泛应用潜力。; 适合人群:具备一定编程基础和优化理论知识,从事科研工作的研究生、博士生及高校教师,尤其是关注智能优化算法及其在工程领域应用的研发人员;熟悉Matlab编程环境者更佳。; 使用场景及目标:①用于解决复杂的连续空间优化问题,如函数优化、参数辨识、工程设计等;②作为新型元启发式算法的学习与教学案例;③支持高水平论文复现与算法改进创新,推动在微电网、无人机路径规划、电力系统等实际系统中的集成应用; 其他说明:资源包含完整Matlab代码和复现指导,建议结合具体应用场景进行调试与拓展,鼓励在此基础上开展算法融合与性能优化研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值