肥宅钓鱼网
当前位置: 首页 钓鱼百科

vuex原理及使用方法(vue框架中vuex的作用是什么)

时间:2023-08-14 作者: 小编 阅读量: 1 栏目名: 钓鱼百科

它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。把组件的共享状态抽取出来,以一个全局单例模式管理。这就是“状态管理模式”。

点击右上方红色按钮关注“web秀”,让你真正秀起来

前言

前段时间,有小伙伴问我,Vuex是怎么玩儿的?也是一直没有机会,趁着今天有空,一起来学习一波。

本文章你能学到什么?

1、Vuex是什么?哪种功能场景使用它?

2、Vuex有哪几种属性?

3、使用Vuex的好处?

4、使用Vuex示例。

5、Vuex常见错误。

下面我们来详细讲讲!

Vuex是什么?哪种功能场景使用它?

官方话:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。

简单的说:Vuex是vue框架中状态管理。

这里就又出现一个问题:那什么是“状态管理模式”?

什么是“状态管理模式”?

把组件的共享状态抽取出来,以一个全局单例模式管理。在这种模式下,我们的组件树构成了一个巨大的“视图”,不管在树的哪个位置,任何组件都能获取状态或者触发行为!这就是“状态管理模式”。

应用场景有:单页应用中,组件之间的数据状态。 应用实例: 1、购物车功能; 2、下单页面有选择优惠券按钮,点击进入优惠券页面,选择后返回到下单页,数据会绑定回来,显示已选择的优惠券; 3、登录状态等等

Vuex有哪几种属性?

有五种,分别是 State、 Getter、Mutation 、Action、 Module

Vuex的State特性

1、Vuex就是一个仓库,仓库里面放了很多对象。其中state就是数据源存放地,对应于一般Vue对象里面的data

2、state里面存放的数据是响应式的,Vue组件从store中读取数据,若是store中的数据发生改变,依赖这个数据的组件也会发生更新

3、它通过mapState把全局的 state 和 getters 映射到当前组件的 computed 计算属性中

Vuex的Getter特性

1、getters 可以对State进行计算操作,它就是Store的计算属性

2、虽然在组件内也可以做计算属性,但是getters 可以在多组件之间复用

3、如果一个状态只在一个组件内使用,是可以不用getters

Vuex的Mutation特性

Action 类似于 mutation,不同在于:Action 提交的是 mutation,而不是直接变更状态;Action 可以包含任意异步操作。

Vuex的Module特性

Module 可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,方便管理。

const moduleA = {state: { ... },mutations: { ... },actions: { ... },getters: { ... } } const moduleB = {state: { ... },mutations: { ... },actions: { ... } }const store = new Vuex.Store({modules: {a: moduleA,b: moduleB })

使用Vuex的好处?

1、多层嵌套的组件、兄弟组件间的状态会更好管理维护。

2、缓存一些当前要使用请求远程或本地的数据集(刷新后会自己销毁)。

3、有了第二条,就可以减少向服务器的请求,节省资源。如果你的用户足够多,那么每多出一个请求,对公司来说,都是一大笔钱。

4、对开发者来说,如果你的项目足够复杂,团队的规模也不仅是一个人,数据集中处理更利于程序的稳定和维护。

使用Vuex示例

npm install vuex --save<template> <div > <span>count = {{$store.state.count}}</span> <button @click="increment"> 5</button> <button @click="decrement">-3</button> </div></template><script> // 引入mapActions,很重要 import {mapGetters,mapActions} from 'vuex' export default{ //与vuex中的getters关联 computed: mapGetters([ ]), //与vuex中的actions关联 methods: mapActions([ 'increment', 'decrement' ]) }</script>

创建一个vuex文件夹,文件夹里面创建一个store.js文件

import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)// 首先声明一个状态 stateconst state = { count: 0}// 然后给 actions 注册事件处理函数,当这个函数被触发时,将状态提交到 mutaions中处理const actions = { increment: ({ commit }) => commit('increment'), // 提交到mutations中处理 decrement: ({ commit }) => commit('decrement')}// 更新状态const mutations = { increment (state) { state.count = state.count5 }, decrement (state) { state.count = state.count - 3 }}// 获取状态信息const getters = {}// 下面这个相当关键了,所有模块,注册才能使用export default new Vuex.Store({ state, mutations, actions, getters})

要在main.js声明全局

...import store from './vuex/store';...new Vue({ ... store ...})

Vuex常见错误

很多时候,总是不知不觉的直接改变 store 中的状态。这就导致了一个非常常见的错误:Do not mutate vuex store state outside mutation handlers.

改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation

...this.store.commit('increment', 10);

改变一下store.js文件

...const mutations = { increment (state, params) { // params=10 }}...

公告

喜欢小编的点击关注,了解更多知识!

源码地址,可以点击下方“了解更多”获取!

    推荐阅读
  • 100w白炽灯泡表面温度 100瓦白炽灯灯泡表面温度是多少度?

    于1879年由美国发明家托马斯·阿尔瓦·爱迪生发明。1959年,美国在白炽灯的基础上发展了体积和光衰极小的卤钨灯。白炽灯的发展趋势主要是研制节能型灯泡,不同用途和要求的白炽灯,其结构和部件不尽相同。白炽灯的光色和集光性能很好,但是因为光效低,已逐步退出生产和销售环节。

  • 人间至味是清欢下一句(没有下一句)

    以下内容大家不妨参考一二希望能帮到您!人间至味是清欢下一句人间有味是清欢已经是《浣溪沙·细雨斜风作晓寒》的最后一句了,所以没有下一句了。雪沫乳花浮午盏,蓼茸蒿笋试春盘。洛涧入淮后水势一片茫茫。乳白的茶伴着新鲜的蔬菜,味道实在是好极了。现在才知道人间真正有滋味的还是清淡的欢愉。

  • 最鸡肋的四大汽车配置(这些实用汽车配置往往被人忽略)

    一次在小张还车的时候,小李跟小张说了这个问题。AUTOHOLD在车辆启动后,直接按下即可开启。

  • 现款斯威g05(斯威G05告诉你什么叫)

    斯威G05是第二款诞生于全新G平台的十万元级7座中型家用SUV,主打二三线及以下城市。2016年7月27日,SWM斯威汽车品牌在中国北京发布。隶属于奇瑞汽车的捷途X70S,设计造型可圈可点。斯威G05的个性明显更加鲜明,比如犀利的LED大灯组和横贯式尾灯组、大面积的直瀑式前格栅以及前保险杠。对于十万元级的经济型7座家用SUV,斯威G05的第二排座椅可以向前翻折,这就能腾出一定的储物空间。靠背也可完全放倒放平,设计完成度优于捷途X70S。

  • 初心大结局(初心大结局是什么)

    建建知道平荣是因为和父亲的结一直没打开,于是决定帮他们一把。建建回家告诉父亲平荣应征入伍马上就要起程的消息,甘祖昌来不及去村小通知妻子,立即拿上平荣爱吃的酱肉骑车赶往学校。甘祖昌语重心长地告诉女儿,找女婿他看重的是人品、是道德,让平荣在部队看着合适的就好好处一个,平荣终于打开心扉向父亲承认错误,并表示一定不会辜负父亲的期望。

  • 抱娃哄睡方法(怎么哄宝宝睡觉)

    抱娃哄睡方法轻拍宝宝宝宝睡下后,如果他的情绪还是不太安定,妈妈可以轻拍宝宝,给他以安全感,这样宝宝一会儿就会安静下来。只要是慢拍子,平缓的曲子就行。让宝宝睡在背光的一侧宝宝呆在妈妈肚子里的时候,适应了黑黑的睡觉环境。给宝宝一个拥抱妈妈们不要吝啬你们的拥抱,因为宝宝需要安全感,妈妈的拥抱是安抚孩子情绪的良方。所以,睡前给孩子一个拥抱是个很好的哄睡方法呢。

  • 蓝蝴蝶花怎么养(蓝蝴蝶花的养殖方法)

    冬季的时候可以将其放置在避风处,从而安全越冬。在夏季的时候可以追肥一次尿素,促进生长速度,在秋季的时候可以改用磷钾肥,这样它的生长就会非常的健康。

  • 果冻橙软了还能吃吗 果冻橙冻了还能吃吗

    果冻橙软的好还是硬的好视需求而定。对于新鲜的果冻橙皮来说,其中可能会含有较多的挥发油成分,吃起来口感会比较苦涩,而且也会口腔黏膜以及肠胃黏膜造成较大的刺激,因此一般是不建议直接用来泡水喝的。而果冻橙是属于柑桔类的水果,其果皮中也含有较多的挥发油成分,对于人体来说具有化痰止咳、理气顺逆的作用,所以是可以用来做陈皮的,但一般只建议用于食用,而不建议用于药用。

  • 上陡坡急转急弯技巧(上陡坡急转急弯技巧是什么)

    不过,很多车子都有上坡辅助功能,车辆在陡峭或光滑坡面上起步时,驾驶员从制动踏板切换至油门踏板车辆将向后下滑,从而导致起步困难。但是,必要的驾驶还是得学学。接着马上踩离合器切断动力输出,然后继续踩刹车,就能使得车子快速停车,此时应该将档位退到空档。为确保安全,急减速在踩刹车的同时,也踩离合器才是最聪明的做法。

  • 2020年南京中考加分学生公示名单+时间(2020年南京中考加分学生公示名单 时间表)

    根据相关文件要求,国家综合性消防救援队伍人员子女优待政策参照现役军人子女执行。本市赴湖北医务人员、市公共卫生中心隔离病区医务人员、省部属在宁赴湖北医务人员及纳入“十件实事”服务对象的其他人员子女教育优待按相关规定予以照顾。如果考生同时符合几项加分条件,按其中最高的一项加分,不合并加分。