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

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

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

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

点击右上方红色按钮关注“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 }}...

公告

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

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

    推荐阅读
  • 保护血管最好方法 保护血管最好方法有哪些

    这样的“打哈欠”可以通过面部的神经反射刺激到大脑,改善面部、脑部的血液循环,增大脑血管的弹性,还能预防中风和老年痴呆。

  • 断联后又没联系怎么挽回(谈了一年多的男友)

    在我跟林盛挂掉电话的第十三分钟,他消失了,各种意义的消失。我听到这个并不意外,因为江朔说警方一定会往这方面想,他们是不相信唯心主义的。林盛消失的半年后,我几乎快要怀疑是不是当初真的是我的幻觉?警方接到了越来越多这样的案例,却始终给不出结果,就在事态毫无进展的时候,林盛的尸体被找到。

  • 牙膏底部的黑蓝绿代表什么(牙膏底部的黑蓝绿代表什么介绍)

    牙膏底部的黑蓝绿代表什么牙膏包装底部的颜色条也被称为电眼定位点,常用的有红、蓝、绿及黑色等。充料完成后,软管放在自动封尾机上,机器感应到相应颜色点后自动封住软管,以确保封尾时包装处于正确的位置,与产品成分无关。牙膏的生产程序中有一步是灌装封尾,是由专业的灌装封尾机完成的,在这之前,牙膏是牙膏、牙膏筒是牙膏筒。

  • 锡林郭勒机动车驾驶证申请表下载

    机动车驾驶证申请表样板表:

  • 高中必读名著12本(高中必读名著12本大汇总)

    与《大学》《中庸》《孟子》并称“四书”,再加上《诗经》等“五经”,总称“四书五经”。此书新版通行本前80回据脂本汇校,后40回据程本汇校,署名“曹雪芹著,无名氏续,程伟元、高鹗整理”。1961年12月,正式出版,此书重印113次,再版2次,册数则超过了一千万。1986年12月首次出版。1991年3月,《平凡的世界》获中国第三届茅盾文学奖。该剧情节扣人心弦、语言精炼含蓄,人物各具特色,是“中国话剧现实主义的

  • 自吸发动机和涡轮增压实际对比(涡轮增压与自吸发动机的差距到底多大)

    比方说,一台1.4T的涡轮增压发动机和一台2.0L的自然吸气发动机,两者之间的动力输出相差不多,但排量却相差了0.6升,在同速状态下实际油耗表现却相差不多。其实两者还是需要从自身需求出发,对于家用来说,自然吸气发动机要更友好一些,特别是后排坐着小孩的时候,涡轮车型在堵车时,不断的启停很容易让小朋友晕车。

  • 闫怎么读拼音(闫的含义)

    接下来我们就一起去了解一下吧!闫怎么读拼音拼音:yán;曾作“阎”的简化字。本来就是一个姓,很多闫姓族人祖辈墓碑上用“阎”,但也有写“闫”的,原因是“闫”字是古已有之的异体字,并非解放后才发明,古代就有“闫”姓存在,只是解放后因推行《第二次汉字简化方案》而导致“闫”姓者增加了,所以现在“闫”和“阎”同时出现在《百家姓》。闫不是阎的简化字,闫和阎已分化为两个姓氏。

  • 毅力号一定会在火星上找到(毅力号在火星上发现了)

    毅力号在火星上发现了在远古的湖底发现火山岩杰泽罗陨坑内的火山岩NASA/JPL–Caltech正在火星杰泽罗陨坑古湖泊遗址考察的毅力号火星车最近发现,在这个本该到处是沉积岩的地方,居然有火山岩而与之相伴的一系列奇怪现象还。

  • 过年高速公路免费通行时间

    过年高速公路免费通行时间为2月4日0时-2月10日24时,免费通行的天数为7天。需要注意的是,只有七座以下的车型才可以免费通行,七座以上的车型还是会正常收费的,按照汽车的营运性质,一共分为两种,一种是营运车辆,一种是非营运车辆,无论是营运车辆还是非营运车辆,只要是符合七座以下的小型车就可以免费通行。春节期间,出行高峰通常是假期第一天和最后一天,如果是在高速行驶,尽量要避开高峰期,因为这时非常容易堵塞。

  • 形容清净心的句子(描写清净的经典句子)

    以下内容大家不妨参考一二希望能帮到您!形容清净心的句子面对挫折和困难,我们要保持乐观、健康的态度。始终以积极乐观的态度拓展自己和外部世界。静坐常思己过,闲谈莫论人非。人生的境界,说到底,是心灵的境界。若心乱神迷,无论你走多远,你皆捕捉不到人生的本象,领略不到有韵致的风景。唯有心灵的安静,方能铸就人性的优雅。这种安静,是得失后的平和。人心本无染,心静自然清。