什么是vuex如何使用?
|
Vuex是一个专门为Vue.js设计的状态管理库,它可以方便的将应用程序中的所有组件的状态进行集中管理,使状态变得可追踪、可调试和可维护。本文将从Vuex的基本概念讲起,详细介绍Vuex的用法以及如何在Vue应用程序中使用Vuex。全文共分为以下几个部分:
一、Vuex基本概念 Vuex的基本概念就是将应用程序中的状态(数据)提取到全局中进行管理,也就是说,应用程序的所有组件都可以访问和修改这些状态。这样做有两个好处:一是增加了状态的可维护性(将应用程序状态统一管理),二是所有组件对于状态的变化是可追踪和可调试的。
二、Vuex的核心概念 Vuex包含哪些核心概念呢?总起来说,有五个核心:state、mutations、actions、getters和modules。 1、State State就是应用程序的状态,可以看做是应用程序的数据。Vuex通过State来存储组件之间共享的数据。State就是存储数据的地方,它定义了应用程序的数据结构,例如某组件的数据数据结构。 2、Mutations Mutations是Vuex中用来修改状态的方法,类似于事件,每个Mutation都有一个字符串类型的事件名和一个回调函数。在组件中调用Mutation方法时,就相当于触发了相应的事件,然后回调函数修改了State的数据。 3、Actions Actions是Vuex中用来处理异步事件的模块,Actions模块处理异步事件后,可以触发Mutation方法对State进行修改。Actions支持多种语法格式,包括Promise。 4、Getters Getters是Vuex中用来从State中获取数据的方法。经过Getter的处理后的数据仍旧会被缓存,只要相关State的数据没有发生变化,获取到的数据就会一直是旧的数据。Getters的语法格式十分简单,只需要定义一个函数即可。 5、Modules Modules是Vuex提供的一个功能,允许将应用程序的状态分割成多个模块,每个模块都拥有自己的State、Mutations、Actions和Getters,使得对于大型应用程序,管理状态变得轻松和有组织。
三、在Vue应用程序中使用Vuex的步骤 要在Vue应用程序中使用Vuex,需要经过以下几个步骤: 1、安装Vuex 首先,需要使用npm或yarn来安装Vuex。 javascript npm install vuex --save 2、创建Vuex存储 每个Vue的应用程序都需要创建一个store实例。这个store实例用来管理应用程序的状态和状态的变化。创建一个store非常简单: javascript import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const store = new Vuex.Store({ state: {}, mutations: {}, actions: {}, getters: {} }); export default store; 在这个保存为Store.vue的文件中,state、mutations、actions和getters是最基本的Store属性,分别用于存储应用程序的状态、修改状态和从状态中访问数据。在上面的示例中,store的属性都是空的,这个是因为我们还没有开始编写我们的Vue应用程序,当然状态为空也证明我们任务成功。 3、在Vue中使用Vuex 接下来,只需要在Vue应用程序中使用Vuex提供的一些api,来实现Vuex中的核心概念即可: javascript // Hello.vue
{{ message }}
export default { computed: { message () { return this.$store.state.message } }, created () { this.$store.commit('setMessage', 'Hello World') } } 在这个示例中,我们创建了一个名为Hello的组件,组件W就在DOM中渲染了一个简单的文本信息。我们从state属性中获取名为message的状态,用于在模板中渲染该状态。此外,created是Vue组件的钩子函数,在创建组件时调用,其中调用commit方法将消息设置为"Hello World"。 四、Vuex的状态变化流程 当您通过调用Mutation方法或Action方法来修改Vuex中的状态时,状态的变化过程如下: 1、触发Mutation(或Action)方法 2、Mutation(或Action)方法调用时,会提交相应的Mutation事件 3、Vuex会将这个提交的Mutation事件,将处理状态的部分和新的状态值传给Mutation中的回调函数。 4、Mutation中的回调函数修改state的状态值。 5、由于state中的数据发生了变化,Vue会重新计算组件的计算属性和重新渲染组件。 Vue通过该状态变化流程,确保了数据持续的响应式。当组件或状态机器中的Mutation操作被触发,新状态将被推入Vuex的Store并且被所有已声明的组件捕获。 Vuex在内部机制上捕获所有Mutation操作,并且使得数据流动变得高效,这也是它成为状态容器的背后原因。 五、Vuex的严格模式 Vuex有一个名为“严格模式”的特性,该特性可以在置于开发模式时,用来监视状态操作和提交。 严格模式下,只要不是通过Mutation方法来修改状态,则会抛出错误。这使得我们更加容易地捕获状态管理中的报错,也就是说,可以在单元测试中使用严格模式来确保组件中的状态和状态管理器的内部状态保持同步。 开启严格模式的方法很简单。在创建Store实例时,只需要将“strict”设置为true即可。 javascript const store = new Vuex.Store({ state: { count: 1 }, mutations: { increment (state) { state.count } }, strict: true // 这是启用Vuex的严格模式 }); 当我们在严格模式下更改状态,如果出现不能通过mutation更改状态的错误,我们可以更快地捕获错误,从而更快地定位代码错误。 六、Vuex的基本API介绍 Vue有着丰富的API,其中对于Vuex而言,具体有以下几个重要的API: 1、store.dispatch(用来调用Actions处理异步操作) * dispatch(type: string, payload: any) type: 必要参数,提交Mutation的事件类型字符串 payload: 可选参数,携带额外数据的对象 2、store.commit(用来调用mutaions对State进行改变) * commit(type: string, payload: any) type: 必要参数,提交Mutation的事件类型字符串 payload: 可选参数,携带额外数据的对象 3、store.state(用来获取state中的数据) 这是一个只读属性,可以通过store.state.property这样的方式来获取State中的数据。 |
相关文章
热销商品
天2025冬季新款超好看泡芙面包服加厚保暖羽绒棉服女百搭小棉袄外套
2025冬季新款超好看泡芙面包服加厚保暖羽绒棉服女百搭小棉袄外套
¥115 领券购买
淘监狱看守所衣男劳改犯男装三层加厚加绒冬季保暖套装裤子外套棉袄
监狱看守所衣男劳改犯男装三层加厚加绒冬季保暖套装裤子外套棉袄
¥135 领券购买
天361儿童轮滑鞋女童溜冰鞋宝宝滑冰鞋男女生旱冰鞋专业初学者滑轮
361儿童轮滑鞋女童溜冰鞋宝宝滑冰鞋男女生旱冰鞋专业初学者滑轮
¥148 领券购买
天特步溜冰鞋成人儿童轮滑鞋大学生男童女童专业初学者旱冰滑轮滑冰
特步溜冰鞋成人儿童轮滑鞋大学生男童女童专业初学者旱冰滑轮滑冰
¥169 领券购买
天儿童轮滑鞋初学者溜冰鞋女童旱冰滑冰3-6-12岁女孩可调节大小滑轮
儿童轮滑鞋初学者溜冰鞋女童旱冰滑冰3-6-12岁女孩可调节大小滑轮
¥159 领券购买
天特步男女童初学者滑轮溜冰鞋专业成人轮滑鞋6到12岁旱冰鞋直排轮
特步男女童初学者滑轮溜冰鞋专业成人轮滑鞋6到12岁旱冰鞋直排轮
¥180 领券购买
天小状元溜冰鞋女童轮滑鞋儿童初学者3岁2小孩幼儿宝宝男双排滑冰鞋
小状元溜冰鞋女童轮滑鞋儿童初学者3岁2小孩幼儿宝宝男双排滑冰鞋
¥299 领券购买
天中粮长城经典四星赤霞珠单酿干红葡萄酒红酒6瓶正品
中粮长城经典四星赤霞珠单酿干红葡萄酒红酒6瓶正品
¥600 领券购买
天奥兰小红帽果香型西拉干红葡萄酒750ml*6瓶正品原瓶进口红酒
奥兰小红帽果香型西拉干红葡萄酒750ml*6瓶正品原瓶进口红酒
¥229 领券购买
天威龙92珍藏级干红解百纳葡萄酒赤霞珠蛇龙珠品丽珠红酒木盒单支
威龙92珍藏级干红解百纳葡萄酒赤霞珠蛇龙珠品丽珠红酒木盒单支
¥158 领券购买
天【商场同款】太平鸟男装休闲毛呢大衣宽松甄选羊毛大衣B1AAF4B07@
【商场同款】太平鸟男装休闲毛呢大衣宽松甄选羊毛大衣B1AAF4B07@
¥2375 领券购买
淘阿迪达斯GAZELLE INDOOR三叶草运动休闲耐磨板鞋 IG9979 IG6200
阿迪达斯GAZELLE INDOOR三叶草运动休闲耐磨板鞋 IG9979 IG6200
¥288 领券购买
天冰岛奥索Formfit ProAnkle专业脚腕护踝足球篮球护脚踝防崴脚踝套
冰岛奥索Formfit ProAnkle专业脚腕护踝足球篮球护脚踝防崴脚踝套
¥394 领券购买
天英国VG男士休闲商务领带礼盒装高档正装职业窄轻奢韩版新郎7cm
英国VG男士休闲商务领带礼盒装高档正装职业窄轻奢韩版新郎7cm
¥262 领券购买
淘新年穿戴甲猫眼格纹波点蝴蝶结款点钻鎏金分码30片红色蝴蝶结发财
新年穿戴甲猫眼格纹波点蝴蝶结款点钻鎏金分码30片红色蝴蝶结发财
¥5 领券购买
淘直灌式唇膏管2.8克白色高档大牌润唇膏口红外壳手工制作唇膏工具
直灌式唇膏管2.8克白色高档大牌润唇膏口红外壳手工制作唇膏工具
¥1.41 领券购买

