当前位置: 首页 > news >正文

vuex的五个属性及使用方法示例

一,Vuex简介

Vuex是Vue.js的状态管理库,它通过中心化的状态管理使得组件间的数据共享更加容易。
Vuex包含五个核心属性:state、getters、mutations、actions和modules。

Vuex是Vue.js的状态管理库,它提供了一种集中式存储管理应用程序中所有组件的状态,并将其分离到一个可预测的状态容器中。Vuex包括五个核心属性:

二,Vuex五个核心属性

1:state

state:定义了应用程序的状态,就是我们要管理的数据。
存放应用程序的状态(数据),所有组件共享。它是Vue实例的data属性的替代品,但是通过它存储和管理的状态,可以在整个应用程序中实现全局共享,即不同的组件可以通过定义的getter和setter访问同一状态数据。

const store = new Vuex.Store({state: {count: 0}
})

2:getters

getters:用于获取State中的状态,主要用于对state进行逻辑上的组合和应用,类似于Vue组件中的计算属性。

const store = new Vuex.Store({state: {count: 0},getters: {doubleCount(state) {return state.count * 2}}
})

3:mutations

mutations:用于修改state中的数据,是唯一可以修改state的地方。mutations接收state作为第一个参数,接收payload作为第二个参数。
用于修改State中的状态,只能同步执行。Mutation必须是同步函数,因为它们不能处理异步行为,异步行为应该放在Action中处理。

const store = new Vuex.Store({state: {count: 0},mutations: {increment(state) {state.count++},add(state, payload) {state.count += payload}}
})

4:actions

actions:用于异步操作和提交mutations,在actions中可以进行任何异步操作,最后再提交到mutations中同步修改state。actions接收context作为第一个参数,其中包含了state、getters和commit等属性。

可以包含任意异步操作(例如从服务器获取数据),可以用Mutation通过提交(commit)来修改State。

const store = new Vuex.Store({state: {count: 0},mutations: {increment(state) {state.count++}},actions: {incrementAsync(context) {setTimeout(() => {context.commit('increment')}, 1000)}}
})

5:modules

modules:用于将store分割成模块,每个模块都拥有自己的state、mutation、action、getters和子模块,以便提高应用程序的可维护性。

将State、Getter、Mutation、Action模块化,便于组件化和模块化开发。

const store = new Vuex.Store({modules: {cart: {state: {items: []},mutations: {addItem(state, item) {state.items.push(item)}},actions: {addAsyncItem(context, item) {setTimeout(() => {context.commit('addItem', item)}, 1000)}}}}
})

使用方法示例:

const store = new Vuex.Store({modules: {cart: {state: {items: []},mutations: {pushProductToCart (state, payload) {state.items.push({id: payload.id,quantity: 1})}},actions: {addProductToCart ({ state, commit }, product) {const cartItem = state.items.find(item => item.id === product.id)if (!cartItem) {commit('pushProductToCart', product)}}},getters: {cartItems: state => {return state.items}}}}
})
这个代码创建了一个包含cart模块的Vuex store对象,其中cart模块包含state、mutations、actions和getters四个属性,用于管理购物车数据。在addProductToCart action中,使用state.items和commit方法来修改cart模块中的数据。在cartItems getter中,使用state.items来计算购物车中的商品数量和总价。

三,Vuex使用方法

使用方法:

1:安装Vuex:npm install vuex --save

2:在main.js中,导入Vuex,并使用Vue.use()方法注册Vuex。

import Vue from 'vue'
import Vuex from 'vuex'
import App from './App.vue'
Vue.use(Vuex)
const store = new Vuex.Store({state: {count: 0},mutations: {increment(state) {state.count++}}
})
new Vue({store,render: h => h(App)
}).$mount('#app')

3:在组件中使用vuex中的数据和方法。


<template><div><p>Count: {{ count }}</p><button @click="increment">Increment</button></div>
</template>
<script>
export default {computed: {count() {return this.$store.state.count}},methods: {increment() {this.$store.commit('increment')}}
}
</script>

4:vuex综合案例

下面是一个简单的Vuex使用方法的示例:

// 引入Vue和Vuex
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
// 创建一个Store
const store = new Vuex.Store({// 定义Statestate: {count: 0},// 定义Mutationmutations: {increment: state => state.count++,decrement: state => state.count--},// 定义Gettergetters: {evenOrOdd: state => state.count % 2 === 0 ? 'even' : 'odd'},// 定义Actionactions: {incrementIfOdd ({ commit, state }) {if ((state.count + 1) % 2 === 0) {commit('increment')}}}
})
new Vue({el: '#app',store,template: `<div><p>Count: {{ count }}</p><p>Even or Odd? {{ evenOrOdd }}</p><button @click="increment">Increment</button><button @click="decrement">Decrement</button><button @click="incrementIfOdd">IncrementIfOdd</button></div>`,computed: {count () {return this.$store.state.count},evenOrOdd () {return this.$store.getters.evenOrOdd}},methods: {increment () {this.$store.commit('increment')},decrement () {this.$store.commit('decrement')},incrementIfOdd () {this.$store.dispatch('incrementIfOdd')}}
})

这个代码创建了一个Vuex Store,并定义了State、Mutation、Getter、Action。然后将Store实例与Vue实例关联。在Vue组件中,使用计算属性(computed)和方法(methods)来访问State、Getter和Action。在方法中,使用commit来提交Mutation,使用dispatch来分发Action。

相关文章:

vuex的五个属性及使用方法示例

一&#xff0c;Vuex简介 Vuex是Vue.js的状态管理库&#xff0c;它通过中心化的状态管理使得组件间的数据共享更加容易。 Vuex包含五个核心属性&#xff1a;state、getters、mutations、actions和modules。 Vuex是Vue.js的状态管理库&#xff0c;它提供了一种集中式存储管理应…...

9.SpringSecurity核心过滤器-SecurityContextPersistenceFilter

SpringSecurity核心过滤器-SecurityContextPersistenceFilter 一、SpringSecurity中的核心组件 在SpringSecurity中的jar分为4个&#xff0c;作用分别为 jar作用spring-security-coreSpringSecurity的核心jar包&#xff0c;认证和授权的核心代码都在这里面spring-security-co…...

23种设计模式-桥接模式

概念 桥接模式是一种结构型设计模式&#xff0c;它通过将抽象与其实现分离来解耦。它使用接口&#xff08;抽象类&#xff09;作为桥梁&#xff0c;将一个抽象类与其实现类的代码分别独立开来&#xff0c;从而使它们可以各自独立地变化。桥接模式的核心思想是“组合优于继承”…...

TCP PMTU 静态路由

HTTP协议 --- 超文本传输协议TCP --- 80端口超文本 --- 包含有超链接link和多媒体元素标记的文本TCP协议是一种面向连接的可靠性传输协议面向连接&#xff1a;数据在传输前&#xff0c;收发双方建立一条逻辑通道。可靠性确认机制&#xff1a;传输确认&#xff0c;每接受一个数据…...

Android动画——属性动画

在属性动画中&#xff0c;常用到的API有ValueAnimator&#xff0c;ObjectAnimator。ValueAnimator&#xff1a;时间引擎&#xff0c;负责计算各个帧的属性值&#xff0c;基本上其他属性动画都会直接或间接继承它&#xff1b;ObjectAnimator&#xff1a; ValueAnimator 的子类&a…...

华为OD机试真题Python实现【寻找连续区间】真题+解题思路+代码(20222023)

寻找连续区间 题目 给定一个含有N个正整数的数组, 求出有多少个连续区间(包括单个正整数), 它们的和大于等于x。 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Python)真题目录汇总 ## 输入 第一行两个整数N x (0 < N <= 100000 ,0 <= x <=…...

15. 三数之和

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例 …...

40-Golang中的文件

Golang中的文件基本介绍文件的打开和关闭读文件操作应用实例写文件操作实例判断文件是否存在基本介绍 文件在程序中是以流的形式存在的 流&#xff1a;数据在数据源(文件)和程序(内存)之间经历的路程 输入流&#xff1a;数据从数据源到程序之间的路径 输出流&#xff1a;数据…...

Springboot整合RabbitMQ并使用

1、Springboot整合RabbitMQ 1、引入场景启动器 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency>引入AMQP场景启动器之后&#xff0c;RabbitAutoConfiguratio…...

Java中方法引用(引用静态方法、引用成员方法(引用其他类的成员方法、引用本类的成员方法、引用父类的成员方法)、引用构造方法、其他调用方式、小练习)

方法引用&#xff1a;把已经存在的方法拿过来用&#xff0c;当作函数式接口中抽象方法的方法体 我们前面学到Arrays工具类中的sort方法&#xff0c;当我们需要指定排序规则时&#xff0c;需要传递Comparator接口的实现类对象&#xff0c;我们之前使用匿名内部类类的形式作为参…...

整理了100道关于Python基础知识的练习题,记得收藏~

实例1.数字组合 题目&#xff1a; 有四个数字&#xff1a;1、2、3、4&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f;各是多少&#xff1f; 程序分析&#xff1a; 遍历全部可能&#xff0c;把有重复的剃掉。 total0 for i in range(1,5):for j in range(…...

OSG三维渲染引擎编程学习之七十七:“第七章:OSG场景图形交互” 之 “7.8 场景交互”

目录 第七章 OSG场景图形交互 7.8 场景交互 7.8.1 osgGA库 7.8.2 事件消息处理 7.8.3 程序抓图示例...

797.差分

输入一个长度为 n的整数序列。 接下来输入 m个操作&#xff0c;每个操作包含三个整数 l,r,c&#xff0c;表示将序列中 [l,r] 之间的每个数加上 c。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数 n和 m。 第二行包含 n个整数&#xff0c;表示整数序列。 …...

为什么说要慎用BeanUtils,因为性能真的拉跨

1 背景之前在专栏中讲过“不推荐使用属性拷贝工具”&#xff0c;推荐直接定义转换类和方法使用 IDEA 插件自动填充 get / set 函数。不推荐的主要理由是&#xff1a;有些属性拷贝工具性能有点差有些属性拷贝工具有“BUG”使用属性拷贝工具容易存在一些隐患&#xff08;后面例子…...

【项目设计】高并发内存池(六)[细节优化+测试]

&#x1f387;C学习历程&#xff1a;入门 博客主页&#xff1a;一起去看日落吗持续分享博主的C学习历程博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 也许你现在做的事情&#xff0c;暂时看不到成果&#xff0c;但不要忘记&…...

同模块设置不同应用主题方案

有时候公司内部会有不同应用但是有部分模块功能一样&#xff0c;只根据应用角色有些细节逻辑区分的场景。这时候往往采用模块化采用以应用至不同的APP。如果APP主题不一致&#xff0c;该如果解决。 方案&#xff1a; 在不同应用的config.gradle 下面根据不同应用定义不同的a…...

centos7 安装 hyperf

​​​​​​PHP > 7.4 Swoole PHP 扩展 > 4.5&#xff0c;并关闭了 Short Name OpenSSL PHP 扩展 JSON PHP 扩展 PDO PHP 扩展 Redis PHP 扩展 Protobuf PHP 扩展 composer create-project hyperf/hyperf-skeleton 推荐安装项 全部选n php.ini [swoole] extens…...

RZ/G2UL核心板-40℃低温启动测试

1. 测试对象HD-G2UL-EVM基于HD-G2UL-CORE工业级核心板设计&#xff0c;一路千兆网口、一路CAN-bus、 3路TTL UART、LCD、WiFi、CSI 摄像头接口等&#xff0c;接口丰富&#xff0c;适用于工业现场应用需求&#xff0c;亦方便用户评估核心板及CPU的性能。HD-G2UL-CORE系列工业级核…...

PyQt5可视化 7 饼图和柱状图实操案例 ①Qt项目的创建

目录 一、新建Qt项目 二、添加组件和布局 三、添加资源 1. 新建资源文件 2. 添加图标资源 四、frameHead 1. toolBtnGenData 2. toolBtnCounting 3. comboTheme 4. comboAnimation 5. Horizontal Spacer 6. toolBtnQuit 7. 设置toolBtnQuit的功能 8. frameHead的…...

0104路径搜索和单点路径-无向图-数据结构和算法(Java)

文章目录2 单点路径2.1 API2.2 算法实现后记2 单点路径 单点路径。给定一幅图和一个起点s&#xff0c;回答“从s到给定的目的顶点v是否存在一条路径&#xff1f;如果有&#xff0c;找出这条路径。”等类似问题。 2.1 API 单点路径问题在图的处理邻域中十分重要。根据标准设计…...

欧盟单一电信市场:技术规则重塑与产业影响分析

1. 项目概述&#xff1a;一场迟来的电信革命作为一名在通信行业摸爬滚打了十几年的工程师&#xff0c;我经历过从2G到5G的每一次技术迭代&#xff0c;也见证过不同市场间因政策壁垒而导致的种种怪象。比如&#xff0c;你带着一部手机在欧洲大陆旅行&#xff0c;从德国到法国不过…...

【ElevenLabs API接入黄金手册】:20年AI语音工程师亲授5大避坑要点与3小时极速上线实战路径

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs API接入黄金手册&#xff1a;开篇导论与核心价值定位 ElevenLabs 以行业领先的语音自然度、情感表现力与多语言支持能力&#xff0c;成为生成式AI语音服务的事实标准。其API并非仅提供TTS基…...

利用ODX实现整车诊断数据库管理

一:背景与挑战| 背景&#xff1a;在全球汽车行业快速发展的背景下&#xff0c;对车辆诊断技术的要求也在不断提升。ODX&#xff08;Open Diagnostic data eXchange&#xff09;作为行业标准的诊断数据库&#xff0c;已被各大汽车制造商广泛采用&#xff0c;并贯穿于ECU的整个生…...

MCP协议实战:构建AI智能体任务管理服务器与二次开发指南

1. 项目概述&#xff1a;一个为AI智能体“开眼”的MCP服务器最近在折腾AI智能体&#xff08;Agent&#xff09;开发的朋友&#xff0c;估计都绕不开一个词&#xff1a;MCP。全称是Model Context Protocol&#xff0c;你可以把它理解为给大模型&#xff08;比如Claude、GPT-4&am…...

【收藏】2026测试人必看!再不学大模型AI,真的要被行业淘汰了

最近和身边做测试的朋友闲聊&#xff0c;发现大家的焦虑感比往年更重了——有人做了3年功能测试&#xff0c;跳槽面试连初筛都过不了&#xff1b;有人深耕性能测试5年&#xff0c;薪资原地踏步&#xff0c;反而被刚入行、懂AI测试的新人弯道超车。 从ChatGPT横空出世引爆AI行业…...

在新磁盘挂载点/data安装codex

实例是 Oracle Cloud Always Free VM.Standard.E2.1.Micro Linux, /data 目录。 Codex CLI 官方支持用 npm 安装&#xff1a;npm i -g openai/codex&#xff0c;首次运行需要登录 ChatGPT 或配置 API key&#xff1b; 建议&#xff1a;Codex 安装到 /data&#xff1b;bubblewr…...

别再只点CubeMX的SDRAM选项了!STM32F429IGT6外扩W9825G6KH内存的完整驱动与读写测试指南

STM32F429IGT6外扩W9825G6KH内存实战&#xff1a;从CubeMX配置到完整驱动开发的深度解析 如果你正在使用STM32F429IGT6开发板&#xff0c;并且需要扩展大容量内存&#xff0c;W9825G6KH-6I这颗32MB的SDRAM芯片可能已经在你的硬件清单上。许多开发者习惯性地依赖STM32CubeMX生成…...

告别答辩PPT焦虑:百考通AI如何帮你高效搞定毕业答辩

简洁专业的PPT模板&#xff0c;精准的AI内容生成&#xff0c;在线编辑与一键美化——让毕业答辩的最后一步走得更从容。 又到了一年毕业季&#xff0c;当论文终于定稿&#xff0c;你是否发现自己又面临一座新的大山——毕业答辩PPT&#xff1f;面对几十页的论文文档&#xff0c…...

iOS越狱防火墙ijfw:从网络流量监控到精细化应用管控实战

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫ijfw&#xff0c;全称是iOS Jailbreak Firewall。顾名思义&#xff0c;这是一个专门为越狱后的iOS设备设计的防火墙工具。如果你和我一样&#xff0c;是个喜欢在iPhone上“折腾”的玩家&#xff0c;或者对…...

EmbBERT架构解析:面向TinyML的革新设计与优化

1. EmbBERT架构解析&#xff1a;面向TinyML的革新设计在边缘计算设备上部署自然语言处理模型一直面临内存和计算资源的双重限制。传统BERT模型即使经过压缩&#xff0c;其2MB版本在TinyNLP基准测试中平均准确率仅为83.93%&#xff0c;且激活内存占用高达1.5MB。EmbBERT通过三大…...