位置: IT常识 - 正文

Vuex(vuex数据持久化)

编辑:rootadmin
Vuex 1.概念 ​ 在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。 我们先来看看用全局事件总线实现多组件共享数据的方式: vuex实现 2.vuex原理图 3.何时使用? ​ 多 ... Vuex1.概念

推荐整理分享Vuex(vuex数据持久化),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vuex详解和用法,vue下载,vuex是什么,vuex是什么,vuex的五个属性及使用方法,vuex和pinia的区别,vuex和pinia的区别,vuex详解和用法,内容如对您有帮助,希望把文章链接给更多的朋友!

​在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。

我们先来看看用全局事件总线实现多组件共享数据的方式:

vuex实现

2.vuex原理图

3.何时使用?

​多个组件需要共享数据时

4.搭建vuex环境安装vuex

npm i vuex@3

创建文件:src/store/index.js该文件用于创建vuex中最为核心的store

//引入Vue核心库import Vue from 'vue'//引入Vueximport Vuex from 'vuex'//应用Vuex插件Vue.use(Vuex)//准备actions对象——用于响应组件中用户的动作const actions = {}//准备mutations对象——用于修改state中的数据const mutations = {}//准备state对象——用于保存具体的数据const state = {}//创建并暴露storeexport default new Vuex.Store({actions,mutations,state})

在main.js中创建vm时传入store配置项

......//引入storeimport store from './store'......//创建vmnew Vue({el:'#app',render: h => h(App),store})5.基本使用

初始化数据、配置actions、配置mutations,操作文件store.js

//引入Vue核心库import Vue from 'vue'//引入Vueximport Vuex from 'vuex'//引用VuexVue.use(Vuex)const actions = { //响应组件中加的动作jia(context,value){// console.log('actions中的jia被调用了',miniStore,value)context.commit('JIA',value)},}const mutations = { //执行加JIA(state,value){// console.log('mutations中的JIA被调用了',state,value)state.sum += value}}//初始化数据const state = { sum:0}//创建并暴露storeexport default new Vuex.Store({actions,mutations,state,})

组件中读取vuex中的数据:$store.state.sum

组件中修改vuex中的数据:this.$store.dispatch('action中的方法名',数据) 或 this.$store.commit('mutations中的方法名',数据)

Vuex(vuex数据持久化)

备注:若没有网络请求或其他业务逻辑,组件中也可以越过actions,即不写dispatch,直接编写commit

6.getters的使用

概念:当state中的数据需要经过加工后再使用时,可以使用getters加工。

在store.js中追加getters配置

......const getters = { // bigSum有一个参数就是statebigSum(state){return state.sum * 10 // 返回什么bigSum就是什么值}}//创建并暴露storeexport default new Vuex.Store({......getters})

组件中读取数据:$store.getters.bigSum

7.四个map方法的使用

导入四个mapimport {mapState,mapGetters,mapActions,mapMutations} from 'vuex'

mapState方法:用于帮助我们映射state中的数据为计算属性

computed: { //借助mapState生成计算属性:sum、school、subject(对象写法) ...mapState({sum:'sum',school:'school',subject:'subject'}), //借助mapState生成计算属性:sum、school、subject(数组写法) ...mapState(['sum','school','subject']),},

mapGetters方法:用于帮助我们映射getters中的数据为计算属性

computed: { //借助mapGetters生成计算属性:bigSum(对象写法) ...mapGetters({bigSum:'bigSum'}), //借助mapGetters生成计算属性:bigSum(数组写法) ...mapGetters(['bigSum'])},

mapActions方法:用于帮助我们生成与actions对话的方法,即:包含$store.dispatch(xxx)的函数

methods:{ //靠mapActions生成:incrementOdd、incrementWait(对象形式) ...mapActions({incrementOdd:'jiaOdd',incrementWait:'jiaWait'}) //靠mapActions生成:incrementOdd、incrementWait(数组形式) ...mapActions(['jiaOdd','jiaWait'])}

mapMutations方法:用于帮助我们生成与mutations对话的方法,即:包含$store.commit(xxx)的函数

methods:{ //靠mapActions生成:increment、decrement(对象形式) ...mapMutations({increment:'JIA',decrement:'JIAN'}), //靠mapMutations生成:JIA、JIAN(对象形式) ...mapMutations(['JIA','JIAN']),}

备注:mapActions与mapMutations使用时,若需要传递参数需要:在模板中绑定事件时传递好参数,否则参数是事件对象。

8.模块化+命名空间

目的:让代码更好维护,让多种数据分类更加明确。

修改store.js

const countAbout = { namespaced:true,//开启命名空间 state:{x:1}, mutations: { ... }, actions: { ... }, getters: { bigSum(state){ return state.sum * 10 } }}const personAbout = { namespaced:true,//开启命名空间 state:{ ... }, mutations: { ... }, actions: { ... }}const store = new Vuex.Store({ modules: { countAbout, personAbout }})

开启命名空间后,组件中读取state数据:

//方式一:自己直接读取this.$store.state.personAbout.list//方式二:借助mapState读取:...mapState('countAbout',['sum','school','subject']),

开启命名空间后,组件中读取getters数据:

//方式一:自己直接读取this.$store.getters['personAbout/firstPersonName']//方式二:借助mapGetters读取:...mapGetters('countAbout',['bigSum'])

开启命名空间后,组件中调用dispatch

//方式一:自己直接dispatchthis.$store.dispatch('personAbout/addPersonWang',person)//方式二:借助mapActions:...mapActions('countAbout',{incrementOdd:'jiaOdd',incrementWait:'jiaWait'})

开启命名空间后,组件中调用commit

//方式一:自己直接committhis.$store.commit('personAbout/ADD_PERSON',person)//方式二:借助mapMutations:...mapMutations('countAbout',{increment:'JIA',decrement:'JIAN'}),
本文链接地址:https://www.jiuchutong.com/zhishi/313384.html 转载请保留说明!

上一篇:织梦dedecms手机版伪静态教程(织梦手机端)

下一篇:公司员工私车公用如何做会计分录?(公司员工私车公用协议)

  • 微博增加高质量粉丝的技巧(提升微博内容可读性的方法)

    微博增加高质量粉丝的技巧(提升微博内容可读性的方法)

  • 连接错误678怎么解决(网络连接错误678)(连网错误678什么意思)

    连接错误678怎么解决(网络连接错误678)(连网错误678什么意思)

  • 如何升级win10(电脑win7如何升级win10)

    如何升级win10(电脑win7如何升级win10)

  • 一键还原是什么意思(一键还原有用吗)

    一键还原是什么意思(一键还原有用吗)

  • 芒果账号在哪里找(芒果账号密码去哪找)

    芒果账号在哪里找(芒果账号密码去哪找)

  • 抖音怎么清除点赞视频(抖音怎么清除点赞列表)

    抖音怎么清除点赞视频(抖音怎么清除点赞列表)

  • 华为手机微信经常死机(华为手机微信经常掉线怎么回事)

    华为手机微信经常死机(华为手机微信经常掉线怎么回事)

  • 小米4手环充电卡不住(小米4手环充电器和小米3手环充电器一样吗)

    小米4手环充电卡不住(小米4手环充电器和小米3手环充电器一样吗)

  • 华为碰一碰支付为什么没有普及(华为碰一碰支付怎么代理)

    华为碰一碰支付为什么没有普及(华为碰一碰支付怎么代理)

  • iphonex屏幕泛红正常吗(iphone xs屏幕偏红)

    iphonex屏幕泛红正常吗(iphone xs屏幕偏红)

  • 华为手机滚动截屏突然不能用了(华为手机滚动截屏方法)

    华为手机滚动截屏突然不能用了(华为手机滚动截屏方法)

  • 网线能当电话线用吗(网线怎么接)

    网线能当电话线用吗(网线怎么接)

  • iphone震动声音滋滋声(iphone震动声音滋滋声修一下多少钱)

    iphone震动声音滋滋声(iphone震动声音滋滋声修一下多少钱)

  • 手机隔空操作是啥意思(智能手机隔空操作)

    手机隔空操作是啥意思(智能手机隔空操作)

  • 三星盖世a70防水吗(三星a71防水等级)

    三星盖世a70防水吗(三星a71防水等级)

  • win10高级选项怎么进入(win10高级选项怎么改密码)

    win10高级选项怎么进入(win10高级选项怎么改密码)

  • 苹果13.2.3更新了什么(ios13.2更新)

    苹果13.2.3更新了什么(ios13.2更新)

  • 手机怎么连接l805打印机(手机怎么连接l800摄像头)

    手机怎么连接l805打印机(手机怎么连接l800摄像头)

  • iphone7a1778哪国版本(iphone71778是什么版)

    iphone7a1778哪国版本(iphone71778是什么版)

  • vivo手机高清通话功能(vivo手机高清通话在哪里找到)

    vivo手机高清通话功能(vivo手机高清通话在哪里找到)

  • 红米手机的usb调试在哪里(红米手机usb调试开关在哪)

    红米手机的usb调试在哪里(红米手机usb调试开关在哪)

  • 5g属于华为吗(5g网络属于华为吗)

    5g属于华为吗(5g网络属于华为吗)

  • 华为nova4顶上的孔是啥(华为nova4顶部黑点的是干嘛用的)

    华为nova4顶上的孔是啥(华为nova4顶部黑点的是干嘛用的)

  • HbuilderX运行打包项目时报node.exe: --openssl-legacy-provider is not allowed in NODE_OPTIONS的解决办法(hbuilder打包apk)

    HbuilderX运行打包项目时报node.exe: --openssl-legacy-provider is not allowed in NODE_OPTIONS的解决办法(hbuilder打包apk)

  • Win11如何使用自带截图功能?Win11自带截图功能使用三种方法(win11如何设置开机自启动软件)

    Win11如何使用自带截图功能?Win11自带截图功能使用三种方法(win11如何设置开机自启动软件)

  • Linux Mint系统输入法怎么删除? Linux Mint删除多余输入法的技巧(linux系统输入)

    Linux Mint系统输入法怎么删除? Linux Mint删除多余输入法的技巧(linux系统输入)

  • python多线程处理大量文件数据(python多线程处理excel)

    python多线程处理大量文件数据(python多线程处理excel)

  • 小规模纳税人已过开票截止日期禁止开票怎么办
  • 消费税的会计分局
  • 公司注销后账本怎么处理
  • 公司名下的房产过户到个人要交多少税
  • 季末计提所得税可以根据本年利润计算吗?
  • 研发费用可以计入哪个科目
  • 民营非营利企业会计分录大全
  • 开模费用计入什么科目
  • 行政单位会议纪要范文3篇
  • 土地使用权分割转让依据
  • 商品房的销售方式有哪些
  • 超市商品售出可以退货吗
  • 车间房屋维修费属于什么科目
  • 外贸企业当期认证的发票没申报影响退税吗?
  • 增值税发票税率6%是什么
  • 应交税费算什么费用
  • 小型微利企业普惠性
  • 处置的固定资产
  • 应收账款收款后怎么做账
  • 分期消费的实际收益
  • 工程咨询费用取费标准
  • 苹果14
  • intel me有什么用
  • php字符串赋值
  • 代收的税金如何记账
  • 年度确认收入怎么算
  • php文件如何使用
  • 人均劳效的意义
  • php7.3
  • 【AI大比拼】文心一言 VS ChatGPT-4
  • 区块链技术开发入门
  • 万能转换器mp4
  • 承包安装工程活怎么接
  • 收回已转销的应收账款是什么意思
  • 长期股权投资损益调整
  • 进项税转出金额是发票上的哪个
  • 税控发票如何入账
  • 如何分析现金利润情况
  • 研发人员旅游能计入研发费用吗
  • 老板出差司机住哪
  • 会计为什么不能有0
  • 增值税主表和附表
  • mysql8绿色版安装
  • 股权转让怎么做账
  • 出口退免税的条件
  • 事业单位收到发票怎么处理
  • 给客户赞助怎么写合适
  • 公司对员工的罚款有什么标准
  • 新准则公允价值变动科目余额为负数
  • 道路交通事故中施救费应如何处理?
  • 短期借款的相关法规
  • 机械租赁带司机和不带司机的税率
  • 房地产会计核算科目
  • c++ 虚数
  • 如何设置linux
  • redhat操作系统安装步骤
  • 创建svn库
  • 在windows的命令提示符下,命令名在实际输入时规定
  • 电脑被攻击了怎么修复
  • win8换win10系统步骤
  • 高效快捷键
  • linux系统中安装软件的批处理文件
  • 虚拟机里面如何设置网络
  • android开发范例实战宝典
  • javascript ()
  • JAVAscript字符串类型单引号和双引号意一样吗
  • 前端node跨域处理
  • 脚本语言教程
  • linux系统怎么搭建服务器
  • jquery理解
  • sqlserver 服务器
  • wordpress单页面店铺
  • javascript高级程序设计最新版
  • js null,undefined,字符串小结
  • node使用
  • 德阳契税2021年新规
  • 购销合同印花税最新政策2023
  • 企业税收怎么收
  • 四川投诉电话查询
  • 越南入关要给小费吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设