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使用echarts图表自适应的几种解决方案
Dec 04 Vue.js
在vue项目中封装echarts的步骤
Dec 25 Vue.js
vue中实现点击空白区域关闭弹窗的两种方法
Dec 30 Vue.js
Vue项目中如何封装axios(统一管理http请求)
May 02 Vue.js
springboot+VUE实现登录注册
May 27 Vue.js
Vue Element-ui表单校验规则实现
Jul 09 Vue.js
vue项目多环境配置(.env)的实现
Jul 21 Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
关于Vue中的options选项
Mar 22 Vue.js
vue修饰符.capture和.self的区别
Apr 22 Vue.js
vue postcss-px2rem 自适应布局
May 15 Vue.js
vue实现input输入模糊查询的三种方式
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
基于mysql的论坛(4)
2006/10/09 PHP
领悟php接口中interface存在的意义
2013/06/27 PHP
thinkPHP5实现数据库添加内容的方法
2017/10/25 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
css如何让浮动元素水平居中
2015/08/07 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
python spyder中读取txt为图片的方法
2018/04/27 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
Python设计密码强度校验程序
2020/07/30 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
编程实现去掉XML的重复结点
2014/05/28 面试题
shell变量的作用空间是什么
2013/08/17 面试题
物理教学随笔感言
2014/02/22 职场文书
农行心得体会
2014/09/02 职场文书
人事代理委托书
2014/09/27 职场文书
党员评议思想汇报
2014/10/08 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
中学生自我评价范文
2015/03/03 职场文书
刑事案件上诉状
2015/05/23 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书