一.Vuex是什么?为什么要用它?
vuex官方解释
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
大家可以思考一下,组件之间的传值有哪些?有父子通讯,兄弟组件通讯......但是传参对于多层嵌套就显得非常繁琐,代码维护也会非常麻烦。因此vuex就是把组件共享状态抽取出来以一个全局单例模式管理,把共享的数据函数放进vuex中,任何组件都可以进行使用。
二.什么时候我们该使用它?
Vuex 可以帮助我们管理共享状态,并附带了更多的概念和框架。这需要对短期和长期效益进行权衡。
如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。确实是如此——如果您的应用够简单,您最好不要使用 Vuex。一个简单的 store 模式就足够您所需了。但是,如果您需要构建一个中大型单页应用,您很可能会考虑如何更好地在组件外部管理状态,Vuex 将会成为自然而然的选择。
三.安装
方法一:
在脚手架 创建项目时勾选vuex的选项系统会自动创建
方法二:npm 或Yarn安装
npm install vuex@next --save
yarn add vuex@next --save
四.配置
如果采用脚手架方式进行创建,无需任何操作,可以忽略此步骤
新建store文件->index.js,进行如下配置,在main.js中进行引入
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
//数据,相当于data
state: {
},
getters: {
},
//里面定义方法,操作state方发
mutations: {
},
// 操作异步操作mutation
actions: {
},
modules: {
},
})
main.js中
五.核心概念
vuex中一共有五个状态 State Getter Mutation Action Module 下面进行详细讲解
5.1 State
提供唯一的公共数据源,所有共享的数据统一放到store的state进行储存,相似与data
在vuex中state中定义数据,可以在任何组件中进行调用
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
//数据,相当于data
state: {
name:"张三",
age:12,
count:0
},
})
调用:
方法一:
在标签中直接使用
方法二:
this.$store.state.全局数据名称
方法三:
从vuex中按需导入mapstate函数
import { mapState } from "vuex";
注意:当前组件需要的全局数据,映射为当前组件computed属性
5.2 Mutation
更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的事件类型 (type)和一个回调函数 (handler)。这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数:
在vuex中定义:
其中参数state参数是必须的,也可以自己传递一个参数,如下代码,进行计数器的加减操作,加法操作时可以根据所传递参数大小进行相加,减法操作没有传参每次减一
在组件中使用:
定义两个按钮进行加减操作
方法一:
注意:使用commit触发Mutation操作
methods:{
//加法
btn(){
this.$store.commit("addcount",10) //每次加十
}
//减法
btn1(){
this.$store.commit("reduce")
}
}
方法二:
使用辅助函数进行操作,具体方法同上
5.3 Action ——进行异步操作
Action和Mutation相似,Mutation 不能进行异步操作,若要进行异步操作,就得使用Action
在vuex中定义:
将上面的减法操作改为异步操作
在组件中使用:
方法一:
直接使用 dispatch触发Action函数
this.$store.dispatch("asynAdd")
方法二:
使用辅助函数
5.4 Getter
类似于vue中的computed,进行缓存,对于Store中的数据进行加工处理形成新的数据
具体操作类似于前几种,这里不做具体说明
5.5 Modules
当遇见大型项目时,数据量大,store就会显得很臃肿
为了解决以上问题,Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割:
默认情况下,模块内部的 action 和 mutation 仍然是注册在全局命名空间的——这样使得多个模块能够对同一个 action 或 mutation 作出响应。
如果希望你的模块具有更高的封装度和复用性,你可以通过添加 namespaced: true 的方式使其成为带命名空间的模块。当模块被注册后,它的所有 getter、action 及 mutation 都会自动根据模块注册的路径调整命名。
继8月11日、14日连续两次召开电力保供工作紧急视频会议后,8月15日,四川再次召开电力保供调度会。记者从会上获悉,预计全省最大用电负荷将
今年以来,四川积极扩大能源领域有效投资,前7月能源项目累计完成投资493亿元、同比增长4%。8月15日,省能源局相关负责人介绍,前7月煤炭类
8月15日,全省防汛减灾、森林草原防灭火工作电视电话会议召开,深刻汲取彭州8·13山洪灾害教训,分析研判当前形势,安排部署下一步重点工作
8月9日,攀枝花技师学院实习工厂里,焊花四溅,机器声此起彼伏。身穿工作服的教师周树春,在一间间操作室里进进出出,指导学生们焊接。过去
记者从省发改委获悉,上半年全省物流需求平稳增长,行业运行总体平稳。全省社会物流总额64096 2亿元,同比增长4 4%;全省物流业总收入为2270
在全球最大地下工程装备制造基地,掘进机生产计划已排到年底;千亿级工程机械产业园区边建设边生产,打造智能制造标杆……时已立秋,三湘大
上犹县水岩乡卫生院医生蔡昌才驱车前往金盆村为村民骆运招治病。以往,每月去医院就诊不仅路途远,还要排队。这几年有了家庭医生后,直接送
今年2月以来,省药监局深入开展药品安全专项整治行动,坚持问题导向,以严厉打击违法犯罪行为、全面排查风险隐患为手段,推进专项整治行动
没想到,现在直接在窗口就能办理,真是太方便了。蒋琼在九江市经营一家造型工作室,近期有意扩大生意规模,需要资金周转。她带齐资料来到九
记者从新余海关获悉,今年上半年,新余市外贸取得了较好成绩,全市外贸进出口总值184 3亿元,同比增长84 3%,高出全国平均水平74 9个百分点
作为南昌市第二季度集中开工的重大项目之一,南昌数谷产业园项目总投资100亿元,计划2024年5月完工交付使用,拟引进字节跳动、华为(南昌)工
淮南市向中国工程院院士、安徽理工大学校长袁亮颁发了第一张淮南市高层次人才优才卡。为深化我为人才办实事实践活动,落实高层次人才服务保
连日来,宿州市埇桥区不断细化各项工作举措,压实防汛各项责任,提升应急救援保障能力,筑牢防汛安全堤。目前,该区防汛物资已储备到位,全
近日,无为市自然资源和规划局、无为市福渡镇人民政府在无为润峰中海置业有限公司项目部现场举行交地即交证颁证仪式,标志该市交地即交证优
设施齐全的卫生食堂、水冲式的独立卫生间、楼道墙体粉刷一新的宿舍……走进安徽省全椒县武岗学校,已经运行满一年的农村特色寄宿制学校成果
安徽安庆市正式成立“老年助餐慈善基
记者日前从安庆市民政局获悉,该市慈善会近日设立老年助餐慈善基金,共同守护老年人舌尖上的幸福。该基金专项用于资助城乡社区老年食堂、社
安徽淮北积极落实2022年电网防汛度汛
近日,国网淮北供电公司工作人员来到110千伏中泰变电站开展防汛隐患排查。该公司积极落实2022年防汛度汛措施,提前细化应急预案,推进极端
安徽全椒县完善拓展人力信息资源助企
今年以来,全椒县不断完善拓展人力资源信息库、劳务对接信息库、企业用工需求信息库三库信息资源,已摸排400多家次企业缺工岗位信息1 2万个
宿州市埇桥区柔性引进博士推进乡村振
宿州市埇桥区实施博士汇工程,柔性引进29名博士担任副乡镇长或园区副主任,他们将为加快产业发展、推进乡村振兴强化智力支持。目前,博士专
安徽印发出台全面实施零基预算改革方
为进一步提高财政资源配置效率和资金使用效益,省政府印发《安徽省全面实施零基预算改革方案》,明确从编制2023年预算起,在全省范围内全面
5月份安徽居民消费价格同比上涨2.3%
近日,国家统计局安徽调查总队发布了我省5月份居民消费价格统计数据。统计显示,我省居民消费价格同比上涨2 3%,同比涨幅比上月回落0 4个百分
安徽多种方式引导群众防范非法集资风
合肥地铁1号线、3号线上滚动播放防范非法集资宣传视频,淮南市发布《致老年群众的一封信》……6月份是一年一度防范和处置非法集资宣传月,今
铁路部门持续加大长三角地区运力投放
记者从中国铁路上海局集团有限公司获悉,随着上海疫情防控形势持续向好,为进一步适应旅客出行需要,助力复工复产,铁路部门自6月10日起持续加
安徽六安持续精准施策全力促进工业发
六安市与蔚来汽车签署合作协议,共建智能电动汽车零部件配套产业园区。该园区一期计划2023年上半年投产,建成后将具备年产30万吨铝压铸产能,
安徽淮北全力维护外卖送餐员合法权益
为切实防范化解新业态领域重大风险隐患,强化外卖送餐员权益保障工作,淮北市市场监管局充分发挥职能作用,全力维护外卖送餐员合法权益。淮北
湖南涟源开展专项行动一对一为企业纾
位于涟源市的湖南三合美新材料科技有限公司,两条生产线满负荷运行,生产聚氨酯和岩棉复合板。因产品升级与产能扩充,急需新增两条生产线,
湖南蓝山县进村入户排查整治自建房安
老叔,这栋房屋墙体有开裂痕迹,要维修加固,安全重要!5月20日,蓝山县塔峰镇果木村,党员干部上门开展农村自建房安全隐患排查整治。连日来
一季度湖南万元产值综合能耗同比下降
近日,湖南省工业通信业节能监察中心发布一季度全省六大高耗能行业能源消耗统计监测报告。据该报告,一季度全省146家主要高耗能企业的万元
济南起步区一年来累计签约优质项目11
万里黄河第一隧济南黄河济泺路隧道建成通车,占地4000余亩的新能源乘用车零部件产业园加快施工……记者21日采访获悉,建设实施方案获批复一
山东发布通知启动传统民居保护利用试
省住房城乡建设厅、省财政厅近日联合印发《关于做好传统民居保护利用试点工作的通知》,在全省部署开展传统民居保护利用试点工作。此次试点