Vue开发实例(八)Vuex状态管理store

Vuex状态管理store

  • 一、Vuex的安装与配置
  • 二、store使用方法
    • 1、基础使用
    • 2、提交变更
    • 3、getters使用
    • 4、在其他页面(组件)中显示
    • 5、modules多模块

做vue项目的时候, store状态管理器可以帮助我们完成一些数据的存储和管理,通俗理解是存储在store里的都是全局变量,可以通过方法提交更新,其他页面和组件也会同步更新,拿到最新的值。

一、Vuex的安装与配置

方法描述
state状态树:定义需要管理的数组、对象、字符
getters类似计算属性,当需要从store的state中派生出一些状态,就需要使用getter,getter会接受state作为第一个参数,而getter的返回值会根据它的依赖缓存起来,只有getter中的依赖值发生改变才回重新计算。
mutation更改store中state状态的唯一方法就是提交mutation。每个mutation都有一个字符串类型的事件和一个回调函数,我们需要改变state的值就要在回调函数中改变。我们要执行这个回调函数,那么我们需要执行一个相应的调用方法:store.commit
  1. Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到更新。
  2. 不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交(commit)mutation。
  1. 安装vuex支持
npm install vuex --save

注意:
Vue 3 匹配 Vuex 4

npm install vuex@4 --save

Vue 2 匹配 Vuex 3

npm install vuex@3 --save

卸载vuex

npm uninstall vuex --save
  1. 在src下创建store文件夹,建立store/index.js --> 在 index.js 中引入vue 和 vuex
    • 引入vue 和 vuex,并使用 Vue.use(Vuex) 【☆☆☆☆☆】
    • 创建state和mutations
    • export导出Vuex.Store 实例

初始代码

import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)const state = {username: '牛牛',
}
const mutations = {setUser(state, name) {state.username = name},
}
export default new Vuex.Store({state,mutations
})
  1. 在main.js配置,这样就可以全局引入了,省的每个要使用的页面单独在引入。
import Vue from 'vue'
import App from './App.vue'import VueRouter from 'vue-router';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import router from './router/index.js';
import axios from 'axios';import './mock/index.js';
import '@/assets/css/global.css';
import store from './store/index.js';Vue.config.productionTip = false;
Vue.prototype.$axios =axios;
Vue.use(ElementUI);
Vue.use(VueRouter);new Vue({router,store,render: h => h(App),
}).$mount('#app')

二、store使用方法

1、基础使用

语法:$store.state.XXX(XXX属性名)

页面代码,我是以Main2.vue作为基础操作的

<template><div><span>这是Main2</span><br /><br /><h1>{{ $store.state.username }}</h1></div>
</template><script>
export default {name: "Main2",
};
</script><style scoped>
</style>

页面效果
在这里插入图片描述

2、提交变更

使用方法 commit ,语法如下:

this.$store.commit('提交方法名',数据);

在store.js中一个状态字段 userState 和提交的方法 setUserState
在这里插入图片描述
页面代码修改

<template><div><span>这是Main2</span><br /><br /><h1>{{ $store.state.username }}</h1><br />数据状态:{{ $store.state.userState }}<el-button @click="addState">状态+1</el-button></div>
</template><script>
export default {name: "Main2",methods: {addState() {this.$store.commit("setUserState", 1);},},
};
</script><style scoped>
h1,
.el-button {height: auto;
}
</style>

页面效果
在这里插入图片描述

3、getters使用

对数据进行修饰,比如上例中的用户状态,我们假设如下:
0 :无效
1 :1级
2 :2级

store/index.js 增加getters进行数据的修饰并导出getters,全部代码如下:

import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)const state = {username: '牛牛',userState: 0
}
const mutations = {setUser(state, name) {state.username = name},setUserState(state, data) {state.userState += data},
}
const getters = {getUserState(state) {let data;if (state.userState == 0) {data = '无效'} else {data = state.userState + '级'}return data;}
}export default new Vuex.Store({state,mutations,getters
})

页面代码修改
在这里插入图片描述

页面效果
在这里插入图片描述

4、在其他页面(组件)中显示

直接在footer 页面加入显示即可
数据状态:{{$store.state.userState}}

<template><div>store/index.js 来的数据:{{ $store.state.userState }}</div>
</template><script>
export default {name: "Footer",
};
</script><style scoped>
</style>

更新state中的状态时都会同步更新:
在这里插入图片描述

5、modules多模块

  1. 在store下创建文件夹 module ,并建立两个文件 moduleA.js moduleB.js
    在这里插入图片描述

  2. moduleA.js 定义state 的username 为 module_a_user,同理,moduleB.js为 module_b_user

import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({state: {username: "module_a_user"},mutations: {},getters: {}
})
  1. 在store.js中创建modules并导出
    在这里插入图片描述
  2. 代码示例
import Vue from 'vue'
import Vuex from 'vuex'
import moduleA from './module/moduleA.js';
import moduleB from './module/moduleB.js';Vue.use(Vuex)const state = {username: '牛牛',userState: 0
}
const mutations = {setUser(state, name) {state.username = name},setUserState(state, data) {state.userState += data},
}
const getters = {getUserState(state) {let data;if (state.userState == 0) {data = '无效'} else {data = state.userState + '级'}return data;}
}const modules = {a:moduleA,b:moduleB
}export default new Vuex.Store({state,mutations,getters,modules
})

页面使用:
语法:$store.state.模块名.字段名

module用户a:{{$store.state.a.username}}
<br>
module用户b:{{$store.state.b.username}}

页面效果
在这里插入图片描述
操作全部代码,仅供参考

Main2.vue参考代码

<template><div><span>这是Main2</span><br /><br /><h1>{{ $store.state.username }}</h1><br />数据状态:{{ $store.state.userState }}<el-button @click="addState">状态+1</el-button><br /><br />计算数据状态:{{ $store.getters.getUserState }}<br /><br />module用户a:{{ $store.state.a.username }}<br />module用户b:{{ $store.state.b.username }}</div>
</template><script>
export default {name: "Main2",methods: {addState() {this.$store.commit("setUserState", 1);},},
};
</script><style scoped>
h1,
.el-button {height: auto;
}
</style>

store/index.js代码在5.4小节中已经全部提供,往上翻一下
store/module/moduleA.js代码在5.2小节中已经全部提供,往上翻一下


Vuex状态管理store的用法就介绍到这啦~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/730257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将任何文本转换为概念图(GC)

原文地址&#xff1a;how-to-convert-any-text-into-a-graph-of-concepts 使用 Mistral 7B 将任何文本语料库转换为知识图的方法 2023 年 11 月 10 日 使用递归 RAG 方法来实现具有多跳推理的 QnA&#xff0c;以回答基于大型文本语料库的复杂查询。 知识图增强生成与递归 R…

unity-urp:视野雾

问题背景 恐怖游戏在黑夜或者某些场景下&#xff0c;需要用雾或者黑暗遮盖视野&#xff0c;搭建游戏氛围 效果 场景中&#xff0c;雾会遮挡场景和怪物&#xff0c;但是在玩家视野内雾会消散&#xff0c;距离玩家越近雾越薄。 当前是第三人称视角&#xff0c;但是可以轻松的…

【C++】十大排序算法之 归并排序 快速排序

本次介绍内容参考自&#xff1a;十大经典排序算法&#xff08;C实现&#xff09; - fengMisaka - 博客园 (cnblogs.com) 排序算法是《数据结构与算法》中最基本的算法之一。 十种常见排序算法可以分为两大类&#xff1a; 比较类排序&#xff1a;通过比较来决定元素间的相对次序…

力扣--滑动窗口438.找到字符串中所有字母异位词

思路分析&#xff1a; 使用两个数组snum和pnum分别记录字符串s和p中各字符出现的次数。遍历字符串p&#xff0c;统计其中各字符的出现次数&#xff0c;存储在pnum数组中。初始化snum数组&#xff0c;统计s的前m-1个字符的出现次数。从第m个字符开始遍历s&#xff0c;通过滑动窗…

史上最细,接口自动化测试用例设计编写总结,一篇带你打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 说到自动化测试&a…

亚信安慧AntDB:“融合+实时”引领数据库创新

在当今多变的数据应用场景中&#xff0c;AntDB作为行业领先的超融合流式实时数仓&#xff0c;秉承着“融合实时”的研发理念&#xff0c;全面应对企业日益复杂的数据处理需求。通过SQL接口访问多种执行引擎&#xff0c;AntDB在实现交易、分析等多重能力的“超融合”方面取得了显…

SQL设计时增加说明列

后关闭sql Studio,然后打开注册表,注册表地址: 计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\SQL Server Management Studio\18.0_IsoShell\DataProject 如有版本不同,红色内容有所变化,修改内容如下: SSVPropViewColumnsSQL70,SSVPropViewColumnsSQL80 全修改为 1,2,6,7…

魔方,3循环是你的秘密[嗑瓜子]。​

引理1.任意Sn中的元素&#xff1a;(N_1N_2N_3...N_m) 证明&#xff1a; (N_1N_2N_3...N_m) (N_1N_m)(N_1N_m-1)...(N_1N_2) 举例&#xff1a; 比如(1234) (14)(13)(12) (3214) (34)(31)(32) 2.任意An可以表示成3循环的乘积&#xff0c; 证明&#xff1a; 1.An中的元素属于…

抖店无货源模式,采购商品、平台渠道正规吗?相关基础问题解答

我是王路飞。 无货源模式&#xff0c;相信你们也都不陌生了。 每个电商平台都存在这种模式&#xff0c;且我以为&#xff0c;每个电商平台的发展壮大&#xff0c;最应该感谢的就是这些无货源商家了。 而现在说到无货源&#xff0c;最适合普通人的无疑就是抖音小店了。 今天…

[云原生] k8s之存储卷

一、emptyDir存储卷 当Pod被分配给节点时&#xff0c;首先创建emptyDir卷&#xff0c;并且只要该Pod在该节点上运行&#xff0c;该卷就会存在。正如卷的名字所述&#xff0c;它最初是空的。Pod 中的容器可以读取和写入emptyDir卷中的相同文件&#xff0c;尽管该卷可以挂载到每…

【Redis】redis持久化

redis 持久化 所谓的持久化&#xff0c;就是把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。 redis 开始是将所有数据保持在内存中&#xff0c;对数据的更新将根据策略配置异步地保存在磁盘中。 持久化的方式 快照方式 快照是某时某刻对数据的完整备份。在以…

3dmax画图卡顿解决方法---模大狮模型网

当你在使用3D Max进行画图时遇到卡顿问题&#xff0c;可以尝试以下方法来解决&#xff1a; 减少模型复杂度&#xff1a;如果你的场景中有过多的高细节模型&#xff0c;可能会导致卡顿。尝试减少模型的复杂度&#xff0c;合并或简化多边形数量过多的模型。这将减轻计算机的负担&…

【UE 材质 Niagara】爆炸效果

目录 效果 步骤 一、材质部分 二、Niagara部分 效果 步骤 一、材质部分 1. 创建一个材质&#xff0c;这里命名为“M_Burst” 打开“M_Burst”&#xff0c;设置混合模式为半透明&#xff0c;设置着色模型为无光照&#xff0c;勾选双面显示 在材质图表中首先创建扰动效果 其…

智能指针基础知识【C++】【RAII思想 || unique_ptr || shared_ptrweak_ptr || 循环引用问题】

目录 一&#xff0c;为什么需要智能指针 二&#xff0c;内存泄露的基本认识 1. 内存泄露分类 2. 常见的内存检测工具 3&#xff0c;如何避免内存泄露 三&#xff0c;智能指针的使用与原理 1. RAII思想 2. 智能指针 &#xff08;1. unique_ptr &#xff08;2. shared_…

数据治理实战——翼支付金融板块业务数仓建设和数据治理之路

目录 一、数据治理背景 二、数据治理建设内容 2.1 组织协同 2.2 平台建设 2.3 数据应用治理 2.4 数据规范 2.5 数据安全 三、企业级数仓建设 3.1 调研阶段 2.2 平台护航 2.3 数仓分层 2.4 维度建模 2.4.1 维度建模四步曲 2.4.2 命名规范 2.4.3 资产沉淀 2.4.4 …

百度智能云发布专用向量数据库 VDB 1.0,全新设计内核开启性能狂飙

1 专用向量数据库应对未来业务挑战 向量数据库 向量检索 数据库 向量数据库大致可以分为 2 部分&#xff1a;向量数据的检索&#xff0c;以及向量数据的存储和管理。 向量数据库的性能&#xff0c;比如高 QPS、低延时等&#xff0c;使得业务能够更快的响应用户的查询请求…

2024 AI 辅助研发的新纪年

随着人工智能技术的持续发展与突破&#xff0c;2024年AI辅助研发正成为科技界和工业界瞩目的焦点。从医药研发到汽车设计&#xff0c;从软件开发到材料科学&#xff0c;AI正逐渐渗透到研发的各个环节&#xff0c;变革着传统的研发模式。在这一背景下&#xff0c;AI辅助研发不仅…

【kubernetes】关于k8s集群中的ingress规则案例

目录 一、k8s 对外服务之 Ingress 1.1什么是ingress 1.2外部的应用能够访问集群内的服务有哪些方案&#xff1f; 1.3Ingress 组成 1.4Ingress-Nginx 工作原理 1.5ingress 暴露服务的方式 二、实操ingress暴露服务 前期.部署 nginx-ingress-controller 2.1基于host网络…

RabbitMQ的Windows版安装教程

文章目录 前言一、Windows安装RabbitMQ总结 前言 曾经写过一篇关于RabbitMQ的Ubuntu安装教程&#xff08;http://t.csdnimg.cn/5CYfC&#xff09;&#xff0c;当时使用的是Docker将RabbitMQ安装到虚拟机上&#xff0c;但是有很多小伙伴问Windows上如何进行安装RabbitMQ&#x…

flink重温笔记(十二): flink 高级特性和新特性(1)——End-to-End Exactly-Once(端到端精确一致性语义)

Flink学习笔记 前言&#xff1a;今天是学习 flink 的第 12 天啦&#xff01;学习了 flink 高级特性和新特性之 End-to-End Exactly-Once&#xff08;端到端精确一致性语义&#xff09;&#xff0c;主要是解决大数据领域数据从数据源到数据落点的一致性&#xff0c;不会容易造成…