位置: 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手机版伪静态教程(织梦手机端)

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

  • 递延所得税负债账务处理
  • 递延所得税抵消分录
  • 减免申报表如何填
  • 固定资产折旧购买日期还是使用日期呢
  • 服务行业适用什么核算
  • 支付境外软件服务怎么用
  • 库存商品采用定价法
  • 营改增是什么时候提出的
  • 下列应税项目中,不按次计算征收个人所得税的是
  • 企业所得税怎么征收
  • 自产产品对外捐赠需要缴纳增值税吗
  • 农业企业发包给人种植要交纳个税吗?
  • 当月不抵扣的增值税发票怎么做账
  • 酱菜税率是多少
  • 供暖税收分类编码是多少
  • 哪些出口业务不能做
  • 餐饮行业采购流程图
  • 固定资产累计折旧借方表示什么
  • 建筑业月末账务处理
  • 应收账款核销会议纪要
  • 酒店购买矿泉水再卖给客人怎么处理
  • 正回购和逆回购的区别
  • 基准收益率是
  • 应收应付款有零头怎么处理
  • 模具成本怎么核算
  • php删除数据库数据代码
  • 出口退税一般退什么税
  • 高新技术企业研究开发费用加计扣除
  • linux grep过滤空白行
  • php判断文件上传类型
  • 出差海外
  • 股东借款产生的利息可以税前扣除吗
  • iis 7下安装laravel 5.4环境的方法教程
  • php生成图片验证怎么弄
  • 工地扬尘检测仪防尘缸怎么安装
  • transformer的解码器
  • 蓝桥杯咋样
  • 董事长报销应该是怎样的流程
  • 一般纳税人增值税结转账务处理
  • python中生成器的作用
  • 一联发票可以开多少钱
  • python中assert()函数
  • Switch Between Gnome And KDE Desktops In Ubuntu Or Kubuntu
  • 哪些无票费用能够抵扣所得税
  • 一般商品销售的会计分录
  • 普通发票的开具规定是?
  • 银行代发工资必须要本行的卡吗
  • MongoDB中MapReduce编程模型使用实例
  • 分公司能不能作为行政处罚的主体
  • 预收账款和应收账款可以合并吗
  • MySQL中使用命令行查看二进制文件
  • 对公可以转个人账户货款吗
  • 成本费用会计分录
  • 流动资产周转率和总资产周转率
  • 非正常损失的进项税
  • 银行存款日记账与银行对账单之间的核对属于
  • 收到其他应付款会计分录
  • 账户分类的作用是什么
  • 注册资本实缴后钱怎么出来
  • 电费发票没拿到怎么做账
  • 哪些福利费没有附加税
  • 结账时能否用红笔写名字
  • mysql Community Server 5.7.19安装指南(详细)
  • 如何自己解封微信号呢
  • windows key查询
  • 远程桌面安装
  • winxp wifi 无法连接
  • win10预览版和正式版区别
  • perl文件操作
  • javascript中的类型转换
  • python读取grib
  • python ints
  • 基于javascript的毕业设计选题
  • js动态改变网页标题
  • javascript面向对象精要pdf
  • 安卓动画不流畅
  • 浙江国税电子税务局
  • 红字专用发票进什么科目
  • 民营非盈利医院能转让吗
  • 非中山户籍学生可以自己买医保吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设