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

vuex 简单使用

vuex 简单使用


示例:管理一个对象状态

假设我们要管理一个用户对象 user,包含 nameage 两个属性。


1. 定义 Vuex Store

store/index.js 中定义状态、mutations、actions 和 getters:

import { createStore } from 'vuex';const store = createStore({state: {user: {name: 'John Doe',age: 30}},mutations: {// 更新用户名称updateUserName(state, newName) {state.user.name = newName;},// 更新用户年龄updateUserAge(state, newAge) {state.user.age = newAge;},// 更新整个用户对象updateUser(state, newUser) {state.user = newUser;}},actions: {// 异步更新用户名称updateUserNameAsync({ commit }, newName) {setTimeout(() => {commit('updateUserName', newName);}, 1000);}},getters: {// 获取用户全名fullName(state) {return state.user.name;},// 获取用户年龄userAge(state) {return state.user.age;}}
});export default store;

2. 在组件中使用组合式 API 管理对象

在组件中,使用 useStore 钩子访问 Vuex store,并通过 computedmethods 来操作对象状态。

<template><div><h1>用户信息</h1><p>姓名: {{ fullName }}</p><p>年龄: {{ userAge }}</p><input v-model="newName" placeholder="输入新姓名" /><button @click="updateName">更新姓名</button><input v-model="newAge" placeholder="输入新年龄" type="number" /><button @click="updateAge">更新年龄</button><button @click="updateNameAsync">异步更新姓名</button></div>
</template><script>
import { computed, ref } from 'vue';
import { useStore } from 'vuex';export default {setup() {const store = useStore();// 使用 computed 获取状态const fullName = computed(() => store.getters.fullName);const userAge = computed(() => store.getters.userAge);// 使用 ref 定义输入框的绑定值const newName = ref('');const newAge = ref('');// 更新用户名称const updateName = () => {store.commit('updateUserName', newName.value);newName.value = ''; // 清空输入框};// 更新用户年龄const updateAge = () => {store.commit('updateUserAge', parseInt(newAge.value, 10));newAge.value = ''; // 清空输入框};// 异步更新用户名称const updateNameAsync = () => {store.dispatch('updateUserNameAsync', newName.value);newName.value = ''; // 清空输入框};return {fullName,userAge,newName,newAge,updateName,updateAge,updateNameAsync};}
};
</script>

3. 代码说明

  1. State:

    • state.user 是一个对象,包含 nameage 属性。
  2. Mutations:

    • updateUserName:更新用户名称。
    • updateUserAge:更新用户年龄。
    • updateUser:更新整个用户对象(如果需要一次性更新多个属性)。
  3. Actions:

    • updateUserNameAsync:模拟异步操作,1 秒后更新用户名称。
  4. Getters:

    • fullName:返回用户的全名。
    • userAge:返回用户的年龄。
  5. 组件逻辑:

    • 使用 computed 获取 Vuex 中的状态。
    • 使用 ref 绑定输入框的值。
    • 通过 commit 提交 mutations 或 dispatch 分发 actions 来更新状态。

4. 运行效果

  • 输入新姓名并点击“更新姓名”按钮,会立即更新 Vuex 中的 user.name
  • 输入新年龄并点击“更新年龄”按钮,会立即更新 Vuex 中的 user.age
  • 点击“异步更新姓名”按钮,1 秒后会更新 Vuex 中的 user.name

总结

通过这种方式,你可以轻松管理 Vuex 中的对象状态。组合式 API 提供了更灵活的方式来访问和操作 Vuex store,同时保持代码的可读性和可维护性。如果你有更复杂的需求(如嵌套对象或数组),也可以使用类似的方式管理。

相关文章:

vuex 简单使用

vuex 简单使用 示例&#xff1a;管理一个对象状态 假设我们要管理一个用户对象 user&#xff0c;包含 name 和 age 两个属性。 1. 定义 Vuex Store 在 store/index.js 中定义状态、mutations、actions 和 getters&#xff1a; import { createStore } from vuex;const store…...

机器学习_16 朴素贝叶斯知识点总结

朴素贝叶斯&#xff08;Naive Bayes&#xff09;是一种基于贝叶斯定理的概率分类算法&#xff0c;广泛应用于文本分类、垃圾邮件检测和情感分析等领域。它通过计算后验概率来进行分类&#xff0c;核心假设是特征之间相互独立。今天&#xff0c;我们就来深入探讨朴素贝叶斯的原理…...

Xshell连接虚拟机ubuntu,报错(port 22): Connection failed.

Connecting to 192.168.37.131:22... Could not connect to 192.168.37.131 (port 22): Connection failed. 虚拟机ubuntu 可以ping通&#xff0c;但就是连接不上。 先后排查了&#xff0c; 1. 网络适配器是否被禁用 2.设置虚拟机网络适配器的网络连接模式为桥接模式&#xf…...

浏览器报错:无法访问此网站 无法找到xxx.xxx.net的DNS地址。正在诊断该问题。尝试运行Windows网络诊断。DNS_PROBE_STARTED

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;希望我的文章能帮到您&#x1f7ea;如有兴趣可点关注了解更多内容 &#x1f4d8;博主信息 点击标题&#x1f446;有惊喜 &#x1f4c3;文章前言 &#x1f537;文章均为学习和工作中整理的笔记&#xff0c;分享记录…...

2024年国赛高教杯数学建模C题农作物的种植策略解题全过程文档及程序

2024年国赛高教杯数学建模 C题 农作物的种植策略 原题再现 根据乡村的实际情况&#xff0c;充分利用有限的耕地资源&#xff0c;因地制宜&#xff0c;发展有机种植产业&#xff0c;对乡村经济的可持续发展具有重要的现实意义。选择适宜的农作物&#xff0c;优化种植策略&…...

React中如何处理高阶组件中的错误

在 React 高阶组件中处理错误是确保应用程序健壮性和稳定性的重要环节。以下是一些处理高阶组件中错误的常见方法&#xff1a; 1. 捕获渲染时的错误 在高阶组件中&#xff0c;渲染过程可能会因为各种原因&#xff08;如 props 数据格式错误、组件内部逻辑异常等&#xff09;抛…...

CentOS/RHEL如何更换国内Yum源

在国内使用CentOS或RHEL系统时&#xff0c;默认的Yum源是国外的&#xff0c;这可能导致软件包的下载速度慢&#xff0c;甚至出现连接超时的问题。为了解决这个问题&#xff0c;我们可以将Yum源切换到国内的镜像源&#xff0c;从而大大提高软件包的下载速度和稳定性。 本文将详…...

linux 替换jar包中的文件

在 Linux 系统中替换 JAR 文件中的文件&#xff0c;一般可以使用jar命令来完成&#xff0c;以下是具体步骤8&#xff1a; 查找目标文件在 JAR 包中的路径&#xff1a;使用jar tvf命令可以列出 JAR 包中的所有文件&#xff0c;再通过grep命令来过滤出要替换的目标文件。例如&am…...

如何系统成为高级Qt工程师?

要系统性地成为高级Qt工程师,需要从基础到进阶逐步构建知识体系,并结合实战经验、源码分析和架构设计能力的提升。以下是分阶段的系统性学习路径和建议: 一、夯实基础阶段 C++深度掌握 精通C++11/14/17特性(智能指针、lambda、移动语义等)理解面向对象设计、设计模式(如观…...

A9. Jenkins Pipeline自动化构建,飞书通知

怎么收集服务部署信息?【前置】首先Python如何操作JSON数据如何记录部署信息,什么时机统计?如何下发某一服务统计信息 ?那么怎么创建飞书通知机器人呢?编写飞书通知脚本总结下面我们接着上一篇文章《A8. Jenkins Pipeline自动化部署过程,多模块远程服务协调实战》继续往下…...

firefox升级后如何恢复收藏夹和密码的问题

手贱&#xff0c;无聊&#xff0c;看到Firefox提示说再不升级就不能使用了&#xff0c;结果就信了&#xff1b; 升级完之后&#xff0c;傻眼了&#xff0c;收藏夹无法导入&#xff0c;密码全没了 新版的Firefox采用snap方式安装&#xff0c;所以安装路径是在snap下面的&#…...

维护ceph集群

1. set: 设置标志位 # ceph osd set <flag_name> # ceph osd set noout # ceph osd set nodown # ceph osd set norecover 2. unset: 清除标志位 # ceph osd unset <flag_name> # ceph osd unset noout # ceph osd unset nodown # ceph osd unset norecover 3. 标志…...

亲测!我是如何用 Anything LLM 等搭建 AI 智能知识库的

以下是本地部署Anything LLMOllamaDeepSeek R1打造AI智能知识库的教程&#xff1a; 安装Ollama 下载Ollama&#xff1a;浏览器进入ollama.com主页&#xff0c;点击页面右上角或中间下端黑底的“Download”。选择对应的系统图标&#xff0c;如Windows用户点击“Download for W…...

汽车零部件开发应该具备哪些编程思维?

目录 1、功能安全思维 2、实时性与确定性思维 3、可靠性和冗余思维 4、硬件软件协同思维 5、CAN总线通信思维 6、故障诊断和自诊断思维 7、功耗优化思维 8、软件更新和版本管理思维 9、用户体验与安全性思维 汽车零部件开发中&#xff0c;嵌入式软件在车辆系统中的作用…...

利用 OpenCV 进行棋盘检测与透视变换

利用 OpenCV 进行棋盘检测与透视变换 1. 引言 在计算机视觉领域&#xff0c;棋盘检测与透视变换是一个常见的任务&#xff0c;广泛应用于 摄像机标定、文档扫描、增强现实&#xff08;AR&#xff09; 等场景。本篇文章将详细介绍如何使用 OpenCV 进行 棋盘检测&#xff0c;并…...

DeepMind发布Matryoshka(套娃)量化:利用嵌套表示实现多精度LLM的低比特深度学习

本文将介绍 Google DeepMind 提出的 Matryoshka 量化技术&#xff0c;该技术通过从单个大型语言模型 (LLM) 实现多精度模型部署&#xff0c;从而革新深度学习。我们将深入研究这项创新技术如何提高 LLM 的效率和准确性。 随着深度学习模型在规模和复杂度上持续增长&#xff0c…...

DeepSeek01-本地部署大模型

一、ollama简介&#xff1a; 什么是 Ollama&#xff1f; Ollama 是一个用于本地部署和管理大模型的工具。它提供了一个简单的命令行界面&#xff0c; 使得用户可以轻松地下载、运行和管理各种大模型。Ollama 支持多种模型格式&#xff0c; 并且可以与现有的深度学习框架&#x…...

Java-数据结构-(HashMap HashSet)

一、Tree和Hash的区别 在上一篇文章中&#xff0c;我们讲到了"TreeMap"和"TreeSet"&#xff0c;但当我们刷题的时候却会发现&#xff0c;实际应用Map和Set时&#xff0c;却常常都只会用"HashMap"和"HashSet"&#xff0c;这是为什么呢…...

举个栗子:浅显易懂的理解Transformer 模型

用一个简单的比喻来解释 Transformer 模型&#xff0c;让你轻松理解它的工作原理。 Transformer 的比喻&#xff1a;一个高效的翻译团队 想象一下&#xff0c;Transformer 模型就像一个高效的翻译团队&#xff0c;它的任务是把一段英文翻译成中文。这个团队由两部分组成&#…...

el-table 结合 slot 具名插槽遍历封装列表模板

基础效果 要实现以上效果&#xff0c;可对 el-table 进行封装&#xff0c;将列配置视为数组&#xff0c;循环 el-table-column 标签模板组件 <div class"tableSlot"><el-table :data"dataList" border><el-table-columnv-for"(item, …...

游戏引擎学习第108天

仓库:https://gitee.com/mrxiao_com/2d_game_2 看一下我们现在的进展 今天的工作重点是处理游戏中的Z轴问题&#xff0c;特别是如何在不同的层级之间进行移动&#xff0c;并确保Z轴的处理方式与真实世界中的透视效果一致。当前&#xff0c;游戏中的Z轴运动存在问题&#xff0…...

遵循规则:利用大语言模型进行视频异常检测的推理

文章目录 速览摘要01 引言02 相关工作视频异常检测大语言模型 03 归纳3.1 视觉感知3.2 规则生成Normal and Anomaly &#xff08;正常与异常&#xff09;Abstract and Concrete &#xff08;抽象与具体&#xff09;Human and Environment &#xff08;人类与环境&#xff09; 3…...

网页制作01-html,css,javascript初认识のhtml的基本标记

一、 Html简介 英文全称是 hyper text markup language,超文本标记语言,是全球广域网上描述网页内容和外观的标准. Html作为一款标记语言,本身不能显示在浏览器中.标记语言经过浏览器的解释和编译,才能正确地反映html标记语言的内容. 1.html 的基本标记 1&#xff09;头部标…...

vue 判断字符串开头是http或者https

在 Vue 中判断字符串是否以 http 或 https 开头&#xff0c;可以通过以下步骤实现&#xff1a; 方法一&#xff1a;使用 startsWith() 方法 // 在 Vue 组件的方法或计算属性中 isExternalLink(url) {return url?.startsWith(http://) || url?.startsWith(https://); }方法二…...

linux常用命令大全(包括抓包、网络检测、路由等,做项目一点点总结而来!)

文章目录 常用命令**apt相关****ls**&#xff1a;**cd****cp****ls -l | grep ssh**&#xff1a;会列出当前目录中包含 “ssh” 的文件或目录的详细信息。**系统资源**linux路由相关抓包工具和命令tcpdumpwiresharktshark iperf 常用命令 通过上下方向键 ↑ ↓ 来调取过往执行过…...

HarmonyOS组件之Tabs

Tabs 1.1概念 Tabs 视图切换容器&#xff0c;通过相适应的页签进行视图页面的切换的容器组件每一个页签对应一个内容视图Tabs拥有一种唯一的子集元素TabContent 1.2子组件 不支持自定义组件为子组件&#xff0c;仅可包含子组件TabContent&#xff0c;以及渲染控制类型 if/e…...

Linux学习笔记之虚拟地址空间

1.示例引入 运行如下代码那么运行结果如下图。 #include<stdio.h> #include<unistd.h>int main() {pid_t id fork();if(id-1){printf("创建进程错误&#xff01;\n");return 1;}int size0;if(id0){//子进程while(1){printf("我是子进程&#xff0c…...

前端高级面试题

以下是一些前端高级面试可能涉及到的内容: 一、前端工程化 如何构建一个适合大型团队的前端代码规范和构建流程? 答案: 代码规范方面: 使用ESLint结合Prettier来统一JavaScript和CSS(包括预处理器如Sass或Less)的语法风格。例如,规定变量命名采用驼峰命名法,函数名要有…...

MySQL判空函数--IFNULL函数的使用

文章目录 IFNULL函数介绍IFNULL函数的语法举例相关扩展 IFNULL函数介绍 在MySQL中&#xff0c;IFNULL函数用于判断给定的表达式是否为NULL。如果表达式为NULL&#xff0c;则IFNULL函数返回指定的替代值&#xff1b;如果表达式不为NULL&#xff0c;则返回表达式本身的值。 IFN…...

HTTP的“对话”逻辑:请求与响应如何构建数据桥梁?

一、前言 作为现代互联网通信的基石&#xff0c;HTTP协议定义了客户端与服务器之间的“对话规则”。每一次网页加载、API调用或文件传输的背后&#xff0c;都离不开精心构造的HTTP请求与响应。请求中封装了用户的意图——从请求方法、资源路径到提交的数据&#xff1b;响应则承…...