vuex的数据渲染与修改浅析


Posted in Vue.js onNovember 26, 2020

1.vuex是什么?

用官方的话来说“Vuex 就是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化”。而说的通俗易懂点就是”你想要在不同的组件中使用同一份数据,并且在不同的组件中都可以实时修改它并且这份数据保持同步“。

2.如何使用state中的数据

在你创建好store这个仓库之后,并且在其中添加了相应的数据以及修改它的方法,你就可以在你的组件中使用这个仓库了。比如我们的store是这样最简单的一中:

vuex的数据渲染与修改浅析

在组件中渲染store中的数据

1.通过 this.$store来访问store中的state数据,比如我们在页面中使用一个p标签,在里面渲染store中的state中的数据, <p>{{count}}</p> ,此时这个count应该如何从store中拿出来了?

2.这时我们就需要在这个组件中获取store中的数据了。我们可以直接在本组件的计算属性computed中获取

vuex的数据渲染与修改浅析

3.然后p标签中的count就会渲染出store中的count的值 0 了。

如果你觉得这样写太麻烦了,我们就可以使用vuex的辅助函数mapState

在使用这个辅助函数之前我们需要引入这个辅助函数

import {mapState } from 'vuex'

最后同样是在计算属性中使用它, ...mapState(["count"]) ,这样同样可以达到上面的效果,如果有多个数据,那就直接在这个数组后面添加就行了。列如...mapState(["count","count1",...]) ,需要哪个数据直接拿出来用就可以了

3.如何修改state中的数据

首先我们要知道,官网虽然说修改state中的数据唯一方法就是提交 mutation。但是我们也可以直接修改state中的数据,列如this.$store.state.count = 1 ,这样同样修改了数据,但是最好不要这样,因为这样虽然修改了数据,但是这样可能造成一些问题,因为这样vuex监听不到你的修改过程。

言归正传,如何提交mutation了?

1.创建一个方法来提交mutation,比如最简单的点击事件触发某个方法,然后这个方法来提交mutation。 <button @click="Add()">+++</button>,当点击这个按钮时就回触发Add方法,而在Add方法中我们来提交mutation。

在vuex中提交mutation的方式就是使用this.$store.commit()方法,这个方法的参数就是你在store中的mutations中所写的你需要调用的方法。例如上图我们在mutations中创建的add方法,让count自增,所以完整的写法就是在Add方法中:this.$store.commit('add') , 这样当你点击按钮触发组件中的Add方法,这个方法中在通过this.$store.commit('add')方法来修改store中的数据。

如果你觉得这样也麻烦,同样有辅助函数来帮助你,还是一样,先引入这个辅助函数

import { mapMutations} from 'vuex'

然后在本组件的methods中调用它

...mapMutations(['add']), ,然后在按钮点击的时候直接触发add方法就好了,不需要在去触发Add方法了,例如: <button @click="add()">+++</button> ,这样也可以修改vuex中的数据。

总结

到此这篇关于vuex数据渲染与修改的文章就介绍到这了,更多相关vuex数据渲染与修改内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue动态合并单元格并添加小计合计功能示例
Nov 26 Vue.js
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 Vue.js
vue编写简单的购物车功能
Jan 08 Vue.js
Vue实现图书管理案例
Jan 20 Vue.js
Vue使用Ref跨层级获取组件的步骤
Jan 25 Vue.js
Vue中使用wangeditor富文本编辑的问题
Feb 07 Vue.js
vue+flask实现视频合成功能(拖拽上传)
Mar 04 Vue.js
Vue和Flask通信的实现
May 19 Vue.js
vue实现拖拽交换位置
Apr 07 Vue.js
vue判断按钮是否可以点击
Apr 09 Vue.js
Vue ECharts实现机舱座位选择展示功能
May 15 Vue.js
vue el-table实现递归嵌套的示例代码
Aug 14 Vue.js
vue动态合并单元格并添加小计合计功能示例
Nov 26 #Vue.js
vue单元格多列合并的实现
Nov 26 #Vue.js
VUE项目实现主题切换的多种方法
Nov 26 #Vue.js
Vue项目如何引入bootstrap、elementUI、echarts
Nov 26 #Vue.js
vue实现广告栏上下滚动效果
Nov 26 #Vue.js
Vue组件生命周期运行原理解析
Nov 25 #Vue.js
vue element-ul实现展开和收起功能的实例代码
Nov 25 #Vue.js
You might like
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
2015/09/23 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
javascript 写类方式之五
2009/07/05 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
2016/01/08 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
express文件上传中间件Multer详解
2016/10/24 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
深入浅析python继承问题
2016/05/29 Python
python实现各进制转换的总结大全
2017/06/18 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
优秀求职自荐信怎样写
2013/12/18 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
个人借条范本
2015/05/25 职场文书
催款函范文
2015/06/24 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
Python面试不修改数组找出重复的数字
2022/05/20 Python
MySQL导致索引失效的几种情况
2022/06/25 MySQL
Win11 KB5015814遇安装失败 影响开始菜单性能解决方法
2022/07/15 数码科技