VuePack状态管理实战:借助 Counter 示例彻底搞懂 Vuex、mutations 与 actions
VuePack状态管理实战借助 Counter 示例彻底搞懂 Vuex、mutations 与 actions【免费下载链接】vuepack:package: A modern starter which uses Vue 2, Vuex, Vue-router and Webpack 2 (and even Electron)项目地址: https://gitcode.com/gh_mirrors/vu/vuepackVuePack 是一个现代化的 Vue 2 脚手架项目开箱即用 Vue 2、Vuex、Vue Router 和 Webpack 2。本文将通过 VuePack 内置的 Counter 计数器示例带你从零搞懂 Vuex 状态管理的三大核心概念state、mutations 与 actions并学会把它们接入到自己的 Vue 应用中。 为什么选择 VuePack 来学习 Vuex很多新手学 Vuex 喜欢凭空搭项目结果卡在配置上。而 VuePack 已经把 vuex 和 vuex-router-sync 写进了依赖store、router、组件全部预配置好Vue 2 Vuex 2 Vue Router完整全家桶热重载修改 store 文件页面状态立即响应JSX 与单文件组件双写法同一个 Counter 组件同时提供 JSX 版本 和 Counter.vue 版本方便对照学习可选支持 Electron、ESLint、PostCSS 等详见 docs/ 目录也就是说你可以跳过所有环境配置直接读懂状态管理是怎么跑起来的。 Counter 示例一个按钮看懂三种操作Counter 组件是 VuePack 状态管理的演示窗口它在 首页视图 中被渲染。界面上有一个大数字以及三个按钮按钮触发的 Vuex 操作对应代码Incrementcommit(INCREMENT)同步 1Decrementcommit(DECREMENT)同步 -1Increment Asyncdispatch(incrementAsync)异步 1在 JSX 版本的 Counter 组件 中三个方法一一对应increment() { this.$store.commit(INCREMENT) } decrement() { this.$store.commit(DECREMENT) } incrementAsync() { this.$store.dispatch(incrementAsync) }记住两个动词就够用了commit→ 提交 mutation同步dispatch→ 派发 action异步️ state 与 mutations同步改数据的正确姿势打开 store 入口文件整个 Vuex 实例只有 33 行代码。1️⃣ state唯一的数据源const state { count: 0 }Vuex 的核心思想是Single Source of Truth所有需要共享的数据都集中在 state 里。Counter 组件展示的数字就是直接读取this.$store.state.count见 Counter 渲染部分。组件不自己持有数字只引用store——这就是响应式的来源state 一变界面自动更新。2️⃣ mutations修改 state 的唯一入口const mutations { INCREMENT(state) { state.count }, DECREMENT(state) { state.count-- } }新手最常犯的错误是直接在组件里改 state。Vuex 禁止这种做法所有修改必须走 mutations带来两个好处可追踪每次变更都有明确的方法名调试时一目了然可 DevTools 支持变更以提交记录形式被捕获Counter.vue 单文件版本 演示了更简洁的写法——直接在模板上click$store.commit(INCREMENT)连 methods 都省了。⚡ actions处理异步逻辑的规范写法mutations 里不允许异步操作。那延时加 1、请求接口后更新数据这类逻辑放哪答案是 actions。看 store 中的 actions 定义const actions { incrementAsync({ commit }) { setTimeout(() { commit(INCREMENT) }, 200) } }这里体现了一条清晰的分工链按钮 dispatch(incrementAsync) → action 处理等待 200ms 的异步逻辑 → action 内部 commit(INCREMENT) → mutation 真正修改 state → 界面数字更新记忆口诀actions 负责做事异步流程mutations 负责改数同步变更。你以后写接口请求、轮询、延时任务都套这个模式即可。 三步把 store 接入你的 Vue 应用理解组件之后看看 store 是如何通电到整个应用的。入口是 app.js导入 store 与 routerimport store from ./store同步路由与状态sync(store, router)——由 vuex-router-sync 完成让 store 里能感知当前路由这对根据登录路由恢复状态这类场景非常有用注入根实例new Vue({ router, store, ...App })只要 store 挂在了根实例上任意子组件都能通过this.$store访问这就是 Counter 组件无需 import 也能用 $store 的原因。️ 动手练习给你的 Counter 加一个重置功能按下面三步扩展验证你是否真的掌握了 Vuex 三件套在 store 文件 的 mutations 中新增RESET(state) { state.count 0 }在 Counter 组件 的 methods 中新增reset() { this.$store.commit(RESET) }在渲染函数里加一个 Reset 按钮绑定该方法如果想更进一步可以写一个 action 模拟从服务器加载初始值参考incrementAsync的写法。保存后热重载会自动生效数字会立刻归零。 小结概念一句话理解本项目示例state数据仓库count: 0mutations同步修改的唯一入口INCREMENT/DECREMENTactions异步逻辑的容器incrementAsynccommit / dispatch组件调用 store 的两个动词Counter 的三个按钮VuePack 用 33 行的 store 一个 Counter 组件浓缩了 Vuex 最核心的设计哲学。把它跑起来、改一改你就已经具备了在真实项目中使用 Vuex 的能力。【免费下载链接】vuepack:package: A modern starter which uses Vue 2, Vuex, Vue-router and Webpack 2 (and even Electron)项目地址: https://gitcode.com/gh_mirrors/vu/vuepack创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Jev 爆火之后:我把 “System One 判断下沉“ 的思想,搬进了自己的开源 AI Agent

Jev 爆火之后:我把 “System One 判断下沉“ 的思想,搬进了自己的开源 AI Agent

项目:白泽 Baize —— 面向团队的 AI 助手运行时(Go 1.25,MIT) 仓库: github.com/rebornace/b… | 国内镜像: gitee.com/RebornAce/b… 这篇文章不是 “接入 Jev” 的教程,而是分享一…

2026/10/4 18:49:40 阅读更多 →
插件加载失败深度解析:从failed to load plugins到IAR与MusicFree插件实战

插件加载失败深度解析:从failed to load plugins到IAR与MusicFree插件实战

你是不是也见过这样的报错:failed to load plugins web boot: 2 entries did not activate linxin666/dsh-p,又或者harness failed to load plugins web boot: 1 entry did not activate huayu-yuan?第一次遇到的人多半会懵——什么叫插件没激…

2026/10/4 18:48:40 阅读更多 →
经典多组学整合算法→商用云平台

经典多组学整合算法→商用云平台

llumina Connected Multiomics最新版本发布:拓展多组学发现与研究证据挖掘能力Illumina Connected Multiomics v1.3版本新增功能助力科研团队,在更加一体化的发现工作流中完成配对多组学分析、Correlation Engine证据挖掘、私有分子特征留存,…

2026/10/4 18:48:40 阅读更多 →

最新新闻

实测:把 ClawdChat 的 MCP 工具网关改到 TaoToken 后,Agent 多了 2000+ 可直接调用的工具

实测:把 ClawdChat 的 MCP 工具网关改到 TaoToken 后,Agent 多了 2000+ 可直接调用的工具

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 20:20:03 阅读更多 →
竟有这些口碑超棒的市场SEO优化公司,速看!

竟有这些口碑超棒的市场SEO优化公司,速看!

痛点深度剖析我们团队在实践中发现,当下SEO优化领域存在诸多困境。在流量获取方面,SEO见效慢,不少客户做了半年优化,关键词排名丝毫未动;SEM烧钱快,谷歌广告点击成本攀升,ROI难以转正。流量质量…

2026/10/4 20:20:03 阅读更多 →
ESP32 OTA升级防变砖:双分区与自动回滚机制全解

ESP32 OTA升级防变砖:双分区与自动回滚机制全解

手里那块ESP32刷完新固件后突然没了动静,串口要么一片死寂,要么循环打印abort,那一瞬间多少人脑子里蹦出两个字:变砖。我在刚碰这块芯片时也这么慌过,后来把机制研究明白,再配上双分区和自动回滚&#xff0…

2026/10/4 20:20:03 阅读更多 →
Cursor插件开发核心原理:AI原生编辑器的行为契约体系

Cursor插件开发核心原理:AI原生编辑器的行为契约体系

1. “plugins”不是功能菜单,而是Cursor生态的神经中枢 你第一次在Cursor里点开Settings → Extensions,看到满屏“Install”按钮时,大概率以为这只是个“插件市场”——就像VS Code那样,装个Prettier、ESLint、GitLens&#xff…

2026/10/4 20:19:03 阅读更多 →
若依系统多种搭建方式

若依系统多种搭建方式

本地搭建 前端搭建 若依 -- 前端搭建-CSDN博客 后端搭建 中间件环境搭建 若依后端1 -- 环境搭建-CSDN博客 后端必要服务搭建 若依后端 -- 启动ruoyi-gateway-CSDN博客 若依后端 -- 启动ruoyi-auth, ruoyi-system-CSDN博客 linux虚拟机搭建 基于单独docker容器启动 docker命令…

2026/10/4 20:19:03 阅读更多 →
Java五年面试高频考点:HashMap、JVM、并发与分布式锁全解析

Java五年面试高频考点:HashMap、JVM、并发与分布式锁全解析

最近帮一位准备跳槽的朋友做了一场模拟面试,他简历上写着五年Java开发经验。我问了一个看起来特别基础的问题:JDK 8 的 HashMap 里,put 一个键值对的完整流转是怎样的?他答得还算顺,定位数组、挂链表、转红黑树都提到了…

2026/10/4 20:19:03 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 20:14:29 阅读更多 →