Vuex的简单使用--累加器

2023-11-06

简介

Vuex 是一个专为 Vue.js 应用程序开发的 状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

安装

在项目根目录执行如下命令来安装 Vuex依赖包

npm install vuex --save

创建 store.js 文件,导入 Vuex:

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex);

//实例化一个Vuex.Store的实例
const store = new Vuex.Store({
// 全局 state 对象,用于保存所有组件的公共数据
    state:{
        count:0
    },
// 定义改变 state 初始值的方法,这里是唯一可以改变 state 的地方,缺点是只能同步执行
    mutations:{
        //add函数
        add(state,step){
            state.count+=step
        }
    }
})

//将Vuex.Store暴露出去
export default store

在main.js文件中,导入store实例对象使用

import Vue from 'vue'
import App from './App'
import store from './store'

//创建Vue实例
new Vue({
  el: '#app',
  store,
  render: h => h(App)
})

使用

创建加减计数器组件Add.vue

注意:只能通过mutations变更Store中的全局数据,不可以通过调用this.$store.state.count的方式直接改变数据

<template>
  <div>
    <h3>当前最新的count值为:{{this.$store.state.count}}</h3>
    <button @click="addHandler">+N</button>
  </div>
</template>

<script>
export default {
  name: 'Add',
  data() {
      return {
            step:5
        }
    },
  methods: {
        addHandler() {
             // 调用mutations中的add方法
            this.$store.commit("add",this.step)
        }
    }
}
</script>
<style>
</style>

在App.vue中,引入Add.vue组件

<template>
  <div id="app">
    <my-add></my-add>
  </div>
</template>

<script>
import Add from '@/components/Add'
export default {
  name: 'App',
  components: {
    "my-add": Add
  }
}
</script>
<style>
</style>

模块化

由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。为了解决以上问题,Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割 ,可参考vue-element-admin中的结构

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vuex的简单使用--累加器 的相关文章

  • Vuex Store 模块访问状态

    我想知道如何从另一个文件访问模块存储 状态 到目前为止 这是我的代码 store index js import Vuex from vuex import categories from modules categories Vue us
  • 带 setter 的 mapState

    我想通过分配setter方法mapState 我目前使用一种解决方法 命名我感兴趣的变量 todo 作为临时名称 storetodo 然后在另一个计算变量中引用它todo methods mapMutations clearTodo upd
  • Vue.js:vuex 操作中未捕获的承诺

    我了解 vuex actions 返回承诺 但我还没有找到处理错误的理想模式在 vuex 中 我当前的方法是在我的 axios 插件上使用错误拦截器 然后将错误提交到我的 vuex 存储 in 插件 axios js export defa
  • Vuex 响应式 mapGetters 并传递参数

    我有很多 getter 将参数传递给商店 例如 this store getters getSomeThing this id 我没有找到有关如何最佳使用的建议mapGetters保持反应性 同时传递参数 我发现的一个建议是映射 gette
  • (vue)el-popover鼠标移入提示效果

    vue el popover鼠标移入提示效果 效果 代码
  • 如何使用 Vuex 模块发布 Vue.js NPM 包?

    我正在开发一些 Vue 组件 我想将它们放入 NPM 包中 我面临的问题是我不知道如何发布依赖于 Vuex 模块的组件 我已经将这个组件库所需的所有代码整齐地放置到一个单独的 Vuex 模块中 但是当有人导入我的包时 如何注册我的模块 我猜
  • 基于springboot+vue实现位置的多分馆图书馆推荐系统演示【附项目源码+论文说明】

    基于springboot实现位置的多分馆图书馆推荐系统演示 摘要 时代的变化速度实在超出人类的所料 21世纪 计算机已经发展到各行各业 各个地区 它的载体媒介 计算机 大众称之为的电脑 是一种特高速的科学仪器 比人类的脑袋要灵光无数倍 什么
  • vue中的防抖和节流

    在Vue中 防抖和节流是两种常用的优化技术 用于限制事件的触发频率 以提高页面性能 防抖 Debounce 是指在事件被触发后 等待一段时间后再执行回调函数 如果在这段等待时间内 事件又被触发 则重新计时 防抖通常用于限制重复触发频率较高的
  • Vuex 模块中的 Nuxtjs Axios CORS 错误

    我正在使用 Nuxtjs 和内置 Vuex 模块以及 Nuxtjs 的官方 axios 我试图从本地服务器获取数据 但它总是抛出 CORS 错误 因此 我对 Github 的公共端点进行了 API 调用 但没有成功 仅在控制台中收到 COR
  • 在 Vuex Store 中分页时维护状态

    我正在对来自 Vuex 商店的数据进行分页 我能够成功完成此操作 但在将数据添加到购物车时遇到问题 我只能将一项添加到购物车中 添加第二项时出现 无法读取未定义的属性 id 错误 我已经改用 Vuex 状态映射 它可以工作 但我仍然收到错误
  • Vue3 和Vue2的区别,以及钩子函数的使用

    Vue js 3 和 Vue js 2 是两个主要版本的流行前端框架 它们之间有很多区别 包括性能优化 新特性和改进的API等 以下是一些Vue 3与Vue 2之间的主要区别 以及一些示例代码来说明这些差异 1 性能优化 响应式系统 Vue
  • Vuex - 绑定助手中的动态命名空间(mapState,...)

    我正在动态注册 vuex 存储模块 store registerModule home grid GridStore 然后在组件中 export default name GridComponent props namespace type
  • 如何重新加载 vue 组件?

    我知道解决方案是像这样更新道具数据 this selectedContinent 但我想使用另一种解决方案 在我阅读了一些参考资料后 解决方案是 this forceUpdate 我尝试了一下 但不起作用 演示和完整代码如下 https j
  • Vuetify 在浅色和深色主题之间切换(使用 vuex)

    所以在我的 Vue 项目中 我基本上有两个页面 组件 将根据 URL 使用 vue router 显示 我可以通过按钮在这些页面 组件之间切换 我还使用 VueX 来管理一些数据 现在 我在其中一个组件中添加了一个开关 用于在 Vuetif
  • Vue.use() 抛出“无法读取未定义的属性‘use’”

    尝试1 main js import createApp from vue import store from store store import App from App vue Vue config productionTip fal
  • 来自 VueX 和 NuxtJS 的持久状态

    我使用 vuex persistedstate 包 https github com robinvdvleuten vuex persistedstate https github com robinvdvleuten vuex persi
  • 如何在 Nuxt.js 中设置 beforeResolve 导航防护

    有没有办法在 nuxt config js 中添加 beforeResolve 导航防护 我的 nuxt config js module exports router beforeResolve to from next if this
  • Vuex - “不要在突变处理程序之外改变 vuex 存储状态”

    我正在尝试从 Firestore 初始化我的 Vuex 商店 最后一行代码context commit SET ACTIVITIES acts 是什么造成了错误 我不认为我会直接改变状态 因为我正在使用一个动作 我可能会错过什么 这是我的
  • 如何使用 Vue 路由器从 Vuex 操作进行导航

    我正在使用 Vue 2 x 和 Vuex 2 x 创建一个 Web 应用程序 我正在通过 http 调用从远程位置获取一些信息 我希望如果该调用失败 我应该重定向到其他页面 GET PETS state gt return http get
  • 类型错误:无法读取未定义的属性“getters”

    我正在尝试测试一个引用 Vuex 商店的基本 Vue 组件 我以为我遵循了 Vue 的例子 https vue test utils vuejs org guides using with vuex html mocking getters

随机推荐

  • 【LVGL 学习】加入内部字体

    使用到的软件 LvglFontTool exe 字符转换工具 链接 http www lfly xyz forum php mod viewthread tid 24 extra page 3D1 软件界面 按照软件界面配置 1 打开lvg
  • 【卷积神经网络】卷积层,池化层,全连接层

    转于 入门PyTorch 卷积层是卷积神经网络的核心 大多数计算都是在卷积层中进行的 1 卷积层 1 1 概述 首先介绍卷积神经网络的参数 这些参数是由一些可学习的滤波器集合构成的 每个滤波器在空间上 宽度和高度 都比较小 但是深度和输入数
  • Spring Boot + Vue 开发网易云,QQ音乐(附源码)!

    来源 segmentfault com a 1190000021376934 前言 虽然 B S 是目前开发的主流 但是 C S 仍然有很大的市场需求 受限于浏览器的沙盒限制 网页应用无法满足某些场景下的使用需求 而桌面应用可以读写本地文件
  • Markdown嵌入视频

    博客 安卓之家 微博 追风917 CSDN 蒋朋的家 简书 追风917 博客园 追风917 操作 今天看到别人github里可以看youtube视频 小白表示惊呆了有木有 于是乎 于是乎 查看了下人家的代码 表示不懂 然后搜索了下 瞬间正能
  • 职场篇—从网络安全行业人才需求讲个人规划

    如果你是一名正在找工作的网络安全方向大学生 或者是刚刚踏入网络安全领域的新手 这篇文章很适合你 如果你是一名老网安人 看看有哪些你中招了 当你打开BOSS直聘 拉钩等招聘类网站后 在首页的快速导航页面很难找到关于网络安全岗位招聘的引导信息
  • unity 监测UI EventTrigger事件

    如果想控制 只是监听点击一次 设置Image的 Raycast Target 的bool值 这样子就不用反复的注销 注册监听了 注销只在销毁的时候 EventTrigger的所有事件类型 PointerEnter 0 鼠标进入 Pointe
  • DAY10栈与队列:232 用栈实现队列

    一 232 用栈实现队列 class MyQueue public stack
  • Java JDK1.8中类常量池、运行时常量池、字符串常量池所处区域

    类常量池 诞生时间 编译时 所处区域 方法区 类常量池存在Class文件中 一个Class文件对应一个类常量池 储存内容 符号引用和字面量 字符串常量池 诞生时间 编译时 所处区域 堆 储存内容 堆内的字符串对象的引用和字符串常量 运行时常
  • untiy AVProVideo 判断视频是否加载完成,可以播放

    我的插件版本是5 3 不同版本API可能会不同 如果一开就跳转视频 会因为视频没有加载完 导致跳转失败 因此必须等待视频加载完再进行跳转 可以直接等一小会再跳转 但是如果固定等待时间的话 一是每个视频加载耗时不一样 不能精确控制 而是由明显
  • 线性表的顺序结构,C语言实现

    线性表的顺序结构 C语言实现 include
  • C++中operator关键字(重载操作符)

    C 中operator关键字 重载操作符 C 编程语言中重载运算符 operator 介绍 C 编程语言中赋值运算符重载函数 operator 介绍 operator operator operator 操作符重载 参考 C 编程语言中赋值
  • 后端即服务BaaS

    Bmob LeanCloud 腾讯TAB APICloud 作为移动开发者 你应该了解Baas 后端即服务 移动端免费可用的BaaS接入方案 通过Bmob Android轻松制作一个APP Android高效率编码 第三方SDK详解系列 二
  • Multi-Object Tracking with Multiple Cues and Switcher-Aware Classification 论文笔记

    Multi Object Tracking with Multiple Cues and Switcher Aware Classification 似乎是商汤投 CVPR2019的论文 文中提出了一个统一的多目标跟踪 MOT 框架 学习充
  • MFC实现图片浏览器

    MFC实现图片浏览器 源代码可以加微信 DDDDYKAJ 一 功能介绍 该程序是基于对话框的图片管理的程序 改程序有以下几个功能 1 获取加载图片的图片数目 2 按下 下一张 浏览所有图片 3 图片按照序号定位 并显示 4 获取每一张图片的
  • 前端练习项目

    30 Web Projects 30 多个带有 HTML CSS 和 JavaScript 的 Web 项目 由 Packt Publishing 提供 https github com PacktPublishing 30 Web Pro
  • Greenplum 查看连接与锁信息数据字典

    Greenplum 查看连接与锁信息数据字典 目录 查看系统中会话 连接 SQL与锁情况 1 查看当前活动的客户端连接数 2 查询客户端连接的情况 3 查看持有锁和等待锁的一些信息 已经修改验证 4 查询系统中正在执行的或者等待执行的事务
  • 怎么给word文档注音_怎么为整篇word文字添加拼音标注

    类型 教育学习大小 21 8M语言 中文 评分 10 0 标签 立即下载 有时候一篇文章时给小朋友或者中文初学者看的 那么怎样给整篇文章每个字批量添加拼音标注呢 下面小编就来教一下大家 由于对word宏命令不太熟悉 我将个任务分解为三部分
  • 使用Opencv+Python的AR小demo

    摘要 浅浅了解一下 Python OpenCV 试着给自己的 iphone 8 做一下相机标定 github 源码 https github com aeeeeeep OpenCvArDemo 定义 增强现实 AR 是一种真实世界环境的交互
  • java 读取svg_Java Batik操作SVG,实现svg读取,生成,动态操作

    SVG在现在的应用场景中还是很常见的 例如绘制复杂的矢量图形 说到SVG 就不得提下Canvas 在这里我就不详细列举它们之间的不同之处 以及为什么要选择SVG或Canvas了 首先 我的项目是一个Maven项目 所以只需要导入batik的
  • Vuex的简单使用--累加器

    简介 Vuex 是一个专为 Vue js 应用程序开发的 状态管理模式 它采用集中式存储管理应用的所有组件的状态 并以相应的规则保证状态以一种可预测的方式发生变化 安装 在项目根目录执行如下命令来安装 Vuex依赖包 npm install