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

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 }}...

公告

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

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

    推荐阅读
  • 太原市妇幼保健院儿童体检时间(太原市妇幼保健院2022年中秋节出诊通知)

    门诊科室长风院区和南内环院区:妇科、产科、儿内科9月10日至9月12日全天门诊,其它科室可查看以下具体安排。

  • 胡颓子叶知识

    拉丁植物动物矿物名:ElaeagnuspungensThunb.采收和储藏:全年均可采,鲜用或晒干。维管束木质部围成半圆形,含导管、管胞和单列射线,中央有排列疏松的薄壁细胞形成半月形似髓部,韧皮部在木质部外侧亦形成半圆形,此外偶见薄壁细胞中含有单宁物质。⑤叶的上表皮细胞波状弯曲。⑥下表皮细胞多角形。虚甚加人参等分,名清肺散。大抵皆取其酸涩,收敛肺气耗散之功耳。

  • 如何控制个人配速(几招教你轻松调整最适合自己的配速)

    PowerBoxSC拥有ANT与蓝牙无线传输功能,可经由手机App得到踩踏平衡、踩踏角度力量等训练重要信息。除此之外,PowerBoxSC通过IPX7防尘、防水等级测试,于水下1m放置30分钟也不会有水浸入机身,因应雨天骑乘绝对没有问题。最后,续航力也是车友选购供功率计时的一大考量,PowerBoxSC搭载CR2450纽扣式电池,单颗电池的续航力达到400小时,并且也方便车友DIY更换,优于部分大厂曲柄式功率计的表现。

  • 橘子上的石灰有毒么(橘子上的石灰是否有毒)

    橘子上的石灰有毒么?以下内容希望对你有帮助!橘子上的石灰有毒么如果不是大量食用的话一般是不会中毒的石灰粉属于熟石灰,是碳酸钙,遇水不会发热,没有毒性,接触后对人也不会有什么危害。生石灰遇水才会分化发热,接触生石灰时有小心。这种水果只要清洗干净,是可以正常食用的。

  • 青岛灵山岛游玩指南 灵山岛旅游景点

    由亭内可整观老虎口。进入港区、候船、上下船和乘船过程中,家长应注意照看携带儿童,确保安全。六、重病、精神病患者、行动不便者不宜登船,如要等船须由专人护送,确保安全;醉酒者禁止登轮。

  • 谷氨酸棒状杆菌呼吸类型(谷氨酸棒状杆菌呼吸类型是有氧呼吸)

    谷氨酸棒状杆菌呼吸类型?谷氨酸棒状杆菌呼吸类型是有氧呼吸,今天小编就来说说关于谷氨酸棒状杆菌呼吸类型?下面更多详细答案一起来看看吧!

  • 梦见绘画(梦见绘画的寓意)

    下面内容希望能帮助到你,我们来一起看看吧!梦见绘画梦见为妻子或恋人画像,意味着在感情上更在乎对方的感受,会让双方的情感更加深厚。梦见为仇人画像,意味着花更大的精力去研究对方的弱点,会主动向对方挑战,爆发激烈的冲突。梦见为飞禽走兽画象,预示着生活幸福丰裕。梦见画画画的很好,预示近期梦者的基础运势佳,能够灵活运用自身的经验,或是凭借惊人的直觉和准确的判断力来指导事业和生活,会得到正面的收获,是吉兆。

  • 麻辣鱼家常简单做法(家常麻辣鱼的做法)

    做法:1、鱼洗干净后,鱼头和鱼排剁成块。

  • 草莓蛋糕卷的做法(草莓蛋糕卷的做法介绍)

    草莓蛋糕卷的做法蛋糕粉适量、鸡蛋4个、牛奶半杯、白糖10g、食用油5g、草莓4颗、白醋3滴。搅拌成无颗粒的液体。蛋清搅拌起大泡加第一次白糖打发。小泡变的发白加第三次白糖继续打发。蛋清打发至筷子立起不会倒。拌好的蛋糕糊倒入高压锅中震出气泡。大概12分钟左右,灯跳到保温状态再闷10分钟。把做好的蛋糕切出一片。卷起,用保鲜膜包住定型放入冰箱冷藏!2小时后拿出切开。

  • 公考常识真题题库(公考常识练习1)

    俄罗斯是沿海国家,最大的内陆国家是哈萨克斯坦。