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 18 Vue.js
实用的 vue tags 创建缓存导航的过程实现
Dec 03 Vue.js
用vue设计一个日历表
Dec 03 Vue.js
在vue中使用inheritAttrs实现组件的扩展性介绍
Dec 07 Vue.js
梳理一下vue中的生命周期
Dec 30 Vue.js
如何在vue-cli中使用css-loader实现css module
Jan 07 Vue.js
vue实现按钮切换图片
Jan 20 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
Vite和Vue CLI的优劣
Jan 30 Vue.js
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
vue整合百度地图显示指定地点信息
Apr 06 Vue.js
vue打包时去掉所有的console.log
Apr 10 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
德生BCL3000的电路分析和打磨
2021/03/02 无线电
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
详解React 元素渲染
2020/07/07 Javascript
JS代码实现页面切换效果
2021/01/10 Javascript
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
TensorFlow实现保存训练模型为pd文件并恢复
2020/02/06 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
美国购车网站:TrueCar
2016/10/19 全球购物
如何利用find命令查找文件
2015/02/07 面试题
Python里面如何实现tuple和list的转换
2012/06/13 面试题
高中毕业生自我鉴定例文
2013/12/29 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
出纳岗位职责范本
2015/03/31 职场文书
门店店长岗位职责
2015/04/14 职场文书
毕业论文指导老师意见
2015/06/04 职场文书
2015年城乡环境综合治理工作总结
2015/07/24 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript