Vuex基本概念

news/2024/10/31 3:18:48/

一、基本概念

vuex:为了解决不关联的组件整个网站状态数据共享问题,专为Vue.js开发的状态管理模式。采用集中式存储管理应用的所有组件状态,并以相应的规则保证状态以一种可预测的方式发生变化。

vuex有5个主要成员:

state:用来存储数据

mutations:修改state中的数据

actions:处理异步操作数据

getters:类似计算属性,对state中的数据做了一些处理

modules:用来对复杂业务分模块,每个模块也可以有state、mutations、actions、getters。

项目目录结构一般为:

二、vuex中mutations和actions的区别

(1)流程顺序:(actions中调用mutations中的方法)

相应视图-->修改state,拆分为两部分,视图触发action,action再触发mutation。一般会在actions方法中进行commit('mutation中的回调方法', action异步获取到的数据)

(2)角色定位:

基于流程顺序,二者扮演不同的角色。mutation:专注于修改state,理论上是修改state的唯一途径

action:业务代码,异步请求

(3)同步/异步限制

角色不同,二者有不同的限制。mutation必须同步执行action可以异步,但不能直接操作state,而且可以通过action来提交mutations。

三、dispatch和commit的用法和区别?

用法:

dispach的是action的方法,commit的是mutations的方法。

dispatch含有异步操作,比如向后台提交数据。写法为:this.$store.dispatch('action方法名', 值)

commit:同步操作,写法:this.$store.commit('mutations方法名',值)

区别:

(1)action提交的是mutation,而不是直接变更状态,可以包含任意的操作。

(2)dispatch推送一个action

dispatch异步操作this.$store.dispatch('action的方法', arg),调用actions里的方法。

commit同步操作this.$store.commit('mutations里的方法',arg),调用mutations里的方法。

在mutations中使用箭头函数更改state中的数据,然后在actions中的函数中通过commit('SET_TOKEN', tokenSuccess)来调用mutations函数并传参,才能再store存储成功。在需要的组件中使用this.$store.dispatch('actions')来调取store里的对应方法,从而更新。

四、vuex如何做到持久化?

vuex是保存在内存中的,刷新之后就会丢失。通过vuex-presisit插件来做持久化。

五、vuex VS localStorage/sessionStorage

vuex:都可对数据进行统一管理。存储数据更加安全,但是当页面刷新后,vuex中state存储的数据同时也会被更新,vuex存储的数据不能持久化,需要监听维持vuex存储的数据状态持久化。

localStorage/sessionStorage:页面刷新不会丢失数据

解决页面刷新导致vuex数据也被更新可以参考https://juejin.cn/post/6918684399659646989


http://www.ppmy.cn/news/21379.html

相关文章

sql进阶,多表及关联

–odps sql –– –author:宋文理 –create time:2023-02-01 16:24:24 –– – 创建非分区表 CREATE TABLE csxx_ffq( rq STRING COMMENT ‘日期’, xh BIGINT COMMENT ‘序号’, sj STRING COMMENT ‘数据’ ) COMMENT ‘测试数据(非分区表)’; – 创建分区表 CRE…

1611_PC汇编语言_math例程分析

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 这一次分析后带有注释的代码我会在笔记最后做一个完整的附加。 这一个例程,主要是为了阐述前面讲到的数学运算。但是从这些操作中,很多底层…

AXI 总线协议学习笔记(2)

引言 从本文开始,正式系统性学学习AXI总线。 如何获取官方协议标准? 第一步:登陆官网:armDeveloper 第二步:登录,无账号需要注册 第三步:点击文档 第四步: 第五步:浏…

BeanUtils源码解析

🍁 作者:知识浅谈,CSDN博客专家,阿里云签约博主,InfoQ签约博主,华为云云享专家,51CTO明日之星 📌 擅长领域:全栈工程师、爬虫、ACM算法 💒 公众号&#xff1a…

Axios网络请求

哈喽~大家好,这篇来看看Axios网络请求。 ​文章推荐链接SpringCloud Sentinel 使用SpringCloud Sentinel 使用将Nacos注册到springboot使用以及Feign实现服务调用将Nacos注册到springboot使用以及Feign实现服务调用微服务介绍与 SpringCloud Eureka微服务介绍与 Sp…

Java程序设计实验3 | 面向对象(上)

*本文是博主对Java各种实验的再整理与详解,除了代码部分和解析部分,一些题目还增加了拓展部分(⭐)。拓展部分不是实验报告中原有的内容,而是博主本人自己的补充,以方便大家额外学习、参考。 目录 一、实验…

OAuth2介绍

目录 一、什么是OAuth2 二、OAuth2中的角色 三、认证流程 四、令牌的特点 五、OAuth2授权方式 授权码 隐藏方式 密码方式 凭证方式 一、什么是OAuth2.0 概念:第三方授权解决方案 OAuth2.0是目前使用非常广泛的授权机制,用于授权第三方应用获取…

【Redis】.net core 3.1 Redis安装和简单使用

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 简单来说,就是一个键值对数据库。 Redis支持的…