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 相关文章推荐
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
Dec 15 Vue.js
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 Vue.js
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 Vue.js
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
vue自定义组件实现双向绑定
Jan 13 Vue.js
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
vue3.0 项目搭建和使用流程
Mar 04 Vue.js
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
Apr 17 Vue.js
vue实现可拖拽的dialog弹框
May 13 Vue.js
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
vue项目中的支付功能实现(微信支付和支付宝支付)
Feb 18 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
PHP把MSSQL数据导入到MYSQL的方法
2014/12/27 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
JavaScript下通过的XMLHttpRequest发送请求的代码
2011/06/28 Javascript
简单实用jquery版三级联动select示例
2013/07/04 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
2015/11/03 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
微信小程序实现滑动切换自定义页码的方法分析
2018/12/29 Javascript
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
解决vue-router 嵌套路由没反应的问题
2020/09/22 Javascript
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
Python 对象中的数据类型
2017/05/13 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
Python实现购物车功能的方法分析
2017/11/10 Python
名片管理系统python版
2018/01/11 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
单位门卫岗位职责
2013/12/20 职场文书
建筑安全生产目标责任书
2014/07/23 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
留学推荐信怎么写
2015/03/26 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
如何用python绘制雷达图
2021/04/24 Python