vuex - 21年的笔记 - 后续更新

vuex是什么

Vuex是实现组件全局状态(数据)管理的一种机制,方便的实现组件之间的数据的共享

使用vuex统一管理状态的好处

  • 能够在vuex中集中管理共享的数据,易于开发和后期维护
  • 能够高效地实现组件之间的数据共享,提高开发效率
  • 存储在vuex中的数据都是响应式的,能够实时保持数据与页面的同步

使用vuex

  • npm install vuex –save
  • 创建store.js文件在src项目中,项目中的代码为:代码1
  • 在main.js中引入store:import store from ‘./store’
  • 在main.js的new Vue({})中添加:代码2
// 代码1
export default Vuex.Store = new Vuex.Store({
    //state中存放的就是全局共享数据
    state:{ },
    mutation:{ },
    action:{ }
    getters: {  }
})
new Vue({
 el: '#app',
  router,
  components: { App },
  template: '<App/>',
  store,
  render:h=>h(App)
}).$mount('#app')

访问state中数据方式

// 以count数据为例: this.$store.state.count 
import { mapState } from 'vuex' // 从vuex中按需导入mapState函数
// 通过刚才导入的mapSate函数,将当前组件需要的全局数据,映射为当前组件的computed计算属性
computed: { ...mapState( [ 'count' ])

Mutation

Mutation用于变更store中的数据

  • 只能通过mutation变更store数据,不可以直接操作Store中的数据
  • 通过mutation方式虽然操作稍微繁琐,但是可以集中监控所有数据的变化
  • Mutation中定义对应的数据处理函数
  • Mutation中的事件处理函数的传值,一个是本身的传值,一个为接收的值
  • 在mutation中不能写异步代码,如计时器setTimeout等,异步操作写在action中
//传递的参数,接收的参数
add(state,step){
  state.count += step
}

触发mutaion

在methods中触发:

//在使用数据的页面中处理,该情况为调用stare.js中mutation中的add方法
handle(){
    //在接收的方法,传递的参数
    this.store.commit('add', 3)  //commit的作用就是调用某个mutation函数
}

从vuex中按需导入mapMutation函数

import { mapMutations } from vuex
// 通过刚才导入的mapMutation函数,将需要的mutation函数,映射为当前组件的methods方法:(例如调用store.js中的add和del方法)
methods:{ ...mapMutations( ['add', 'del'] )  } 

actions

Actions用于异步操作,但是在Actions中还是要通过触发Mutation的方式间接变更数据

const store = new Vuex.store({
      // ...省略其他代码
      mutations: {
        add(state) {
          state.count++
        }
      },
      actions: {
        addAsync(context) {
          setTimeout(() => {
            context.commit('add')
          }, 1000)
        }
      }
    })

在这里插入图片描述

Commit只能触发mutation中的某个函数,通过接收形参context来点出commit
在Actions中不能直接修改state中的数据,必须通过context.commit触发某个motation才行
下图中的dispath函数是专门用来触发actions的
若带有参数,则将参数接在后面
在这里插入图片描述

// 从vuex中按需导入mapActions函数
import { mapActions } from 'vuex'

methods: {  // 将所需的函数映射到当前组件的methods中
    ...mapAction( ['addAsync', 'delAsync'] ),
    ...mapMutation(['add','del'])
} 

//在mapMutations或mapActions中映射方法后,可以直接@click调用方法
<el-button @click="add"></el-button>

Getter

Getter用于对Store中的数据进行加工处理,并不修改store中的数据

getters:{
    showNum(state){
      return '当前的数量是:'+state.count+'.'
    }
 }

使用getter的方式

// This.$store.getter.名称: {{ $store.getters.showNum }}

import { mapGetters } from 'vuex'
conputed:{ ...mapGetters( ['showNum'] ) 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何系统的入门大模型?

GPT图解&#xff0c;从0到1构建大模型。 本书将以生动活泼的笔触&#xff0c;将枯燥的技术细节化作轻松幽默的故事和缤纷多彩的图画&#xff0c;引领读者穿梭于不同技术的时空&#xff0c;见证自然语言处理技术的传承、演进与蜕变。在这场不断攀登技术新峰的奇妙之旅中&#xf…

数据安全运营:难点突破与构建策略全解析

小型企业关注基础安全运营&#xff0c;重点把安全产品“管好”和“用好”。大型企业通过SOC平台&#xff08;安全运营中心&#xff09;把所有安全产品串联起来&#xff0c;对大量的日志进行关联分析&#xff0c;发现事件和告警。通过SOAR平台把运营工作中能“自动化”内容进行预…

修改Linux系统时间与网络同步

文章目录 1、安装ntpdate2、修改时区3、设置系统时间与网络时间同步4、将系统时间写入硬件时间 1、安装ntpdate # Red Hat和Cent OS系统 sudo yum install ntpdate # 乌班图 sudo apt-get install ntpdate2、修改时区 1&#xff09;运行tzselect tzselect2&#xff09;选择A…

H4012耐压30V降压恒压芯片 30V降12V降5V 支持电流3A

耐压30V降压恒压芯片的工作原理如下&#xff1a; 该芯片内部集成了开关管和同步整流管&#xff0c;通过它们进行电压的转换&#xff0c;将输入的30V电压降至所需的输出电压&#xff08;如12V或5V&#xff09;。在工作过程中&#xff0c;该芯片通过PWM&#xff08;脉冲宽度调制…

一套键盘鼠标控制两台电脑 Mouse Without Borders

有两台电脑&#xff0c;一台笔记本一台台式机&#xff0c;拥有各自拥有鼠标和键盘&#xff0c;但总是需要切换&#xff0c;感觉太麻烦&#xff0c;想找个简单的方式&#xff0c;不需要额外操作就能同时操作这两台电脑。无意间发现了一个微软软件Mouse Without Borders&#xff…

项目起冲突,掌握这个模型的人,赢麻了!

在项目管理中&#xff0c;冲突是项目经理们无法避免的一环。在职场中&#xff0c;大家都是如何解决矛盾冲突的呢&#xff1f; 一、项目起冲突的原因及解决方法 项目管理过程中&#xff0c;冲突的产生&#xff0c;往往源自于多个方面&#xff0c;但无论是出于何种原因的项目冲…

#Linux(连接档概念)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;硬链接&#xff08;inode&#xff0c;建立硬链接的文件inode号相同&#xff09; &#xff08;2&#xff09;创建硬链接:ln 文件名1 文件名…

项目中如何进行限流(限流的算法、实现方法详解)

❤ 作者主页&#xff1a;李奕赫揍小邰的博客 ❀ 个人介绍&#xff1a;大家好&#xff0c;我是李奕赫&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 记得点赞、收藏、评论⭐️⭐️⭐️ &#x1f4e3; 认真学习!!!&#x1f389;&#x1f389; 文章目录 限流的算法漏…

quartz整合前端vue加后端springboot

因工作需求&#xff0c;需要能修改定时的任务&#xff0c;前端vue3&#xff0c;后端是springboot 看看页面效果&#xff1a; 首先maven加上引入 <dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><versi…

日常 ------------ (一)

使用xdd 生成 firmware.cc 文件 &#xff0c;然后程序根据需要自己解压缩,也可以完成软件升级状态的监控 objcopy 此等神奇也可以&#xff0c;但是威力太大&#xff0c;容易玩崩&#xff0c;没敢尝试

Solo 开发者周刊 (第8期):Claude公司再度上新产品,成交额将超73亿美元

这里会整合 Solo 社区每周推广内容、产品模块或活动投稿&#xff0c;每周五发布。在这期周刊中&#xff0c;我们将深入探讨开源软件产品的开发旅程&#xff0c;分享来自一线独立开发者的经验和见解。本杂志开源&#xff0c;欢迎投稿。 好文推荐 Claude是否超过Chatgpt,成为生成…

Redis 不再 “开源”,未来采用 SSPLv1 和 RSALv2 许可证

昨日&#xff0c;Redis 官方宣布了一项重要变更&#xff1a;他们将修改开源协议&#xff0c;未来所有版本将采用 “源代码可用” 的许可证。 具体来说&#xff0c;Redis 不再使用 BSD 3-Clause 开源协议进行分发。从 Redis 7.4 版本开始&#xff0c;Redis 将采用 SSPLv1 和 RSA…

【C语言】自定义类型:联合体和枚举

1. 联合体 1.1 联合体类型的声明 像结构体一样&#xff0c;联合体也是由一个或者多个成员构成&#xff0c;这些成员可以是不同的类型。 但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫&#xff1a;共用体。 给联合…

Binance labs孵化的Swan Chain明牌空投测试网零撸教程

简介&#xff1a;Swan Chain 是一个 Layer2云计算网络&#xff0c;可以将数据、计算、带宽和支付集成到一个套件&#xff0c;为Web3项目提供全面的解决方案。 相关概念&#xff1a;云计算、layer2、infrastructure 融资信息&#xff1a;项目在去年获得bi’an领投的300万美元融…

【pip安装时出现一大片红色报错】 raise ReadTimeoutError(self._pool, None, “Read timed out.“)

【pip安装时出现一大片红色报错】 raise ReadTimeoutError(self._pool, None, “Read timed out.”) 问题描述&#xff1a;pip 安装包时出现一大片莫名其妙的报错 raise ReadTimeoutError(self._pool, None, “Read timed out.”) pip._vendor.urllib3.exceptions.ReadTimeout…

onConfigurationChanged与 Save-Restore InstanceState机制与RetainNonConfiguration机制

android横竖屏切换的生命周期 没设置configChanges&#xff0c;销毁后重建&#xff1a; onCreate--onStart--onResume--onPause--onStop--onSaveInstanceState--onDestroy--onCreate--onStart--onRestoreInstanceState--onResume--onPause--onStop--onDestroy 设置configCha…

基于 Google MediaPipe 进行人体姿势估计演示

用于人体姿势估计的 MediaPipe 演示 MediaPipe简介 MediaPipe是一个开源框架&#xff0c;用于构建跨平台、多模式应用机器学习管道。它由 Google 开发&#xff0c;旨在促进基于机器学习的功能的快速开发和部署&#xff0c;特别关注音频、视频和时间序列数据。 我可以将 MediaPi…

产品经理杂谈

像游戏一样设计联赛 1、通过互联网规模化&#xff0c;然后分析数据&#xff0c;哪里好&#xff0c;哪里不好&#xff0c;大家都喜欢你的产品了&#xff0c;然后反哺更大规模 2、产品分类 toC 工具 内容 游戏 社交 电商 交易 toB 内部办公类 – 提高企业内部效率&#xff0c;…

力扣热门算法题 52. N 皇后 II,53. 最大子数组和,54. 螺旋矩阵

52. N 皇后 II&#xff0c;53. 最大子数组和&#xff0c;54. 螺旋矩阵&#xff0c;每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.20 可通过leetcode所有测试用例。 目录 52. N 皇后 II 解题思路 完整代码 Python Java 53. 最大子数组…

TS + Vue3 elementUI 表格列表中如何方便的标识不同类型的内容,颜色区分 enum

TS Vue3 elementUI 表格列表中如何方便的标识不同类型的内容&#xff0c;颜色区分 enum 本文内容为 TypeScript 一、基础知识 在展示列表的时候&#xff0c;列表中的某个数据可能是一个类别&#xff0c;比如&#xff1a; enum EnumOrderStatus{"未受理" 1,"…