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用mixin合并重复代码的实现
Nov 27 Vue.js
详解vue中使用transition和animation的实例代码
Dec 12 Vue.js
Vue与React的区别和优势对比
Dec 18 Vue.js
Vue实现小购物车功能
Dec 21 Vue.js
梳理一下vue中的生命周期
Dec 30 Vue.js
vuex的使用步骤
Jan 06 Vue.js
vue 项目@change多个参数传值多个事件的操作
Jan 29 Vue.js
Vue详细的入门笔记
May 10 Vue.js
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
解决vue自定义组件@click点击失效问题
Apr 30 Vue.js
Vue组件化(ref,props, mixin,.插件)详解
May 15 Vue.js
vue3 自定义图片放大器效果的示例代码
Jul 23 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 验证图片生成函数
2009/05/21 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
JavaScript的parseInt 进制问题
2009/05/07 Javascript
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
javascript读取xml实现javascript分页
2013/12/13 Javascript
js 数组操作之pop,push,unshift,splice,shift
2014/01/29 Javascript
js关于命名空间的函数实例
2015/02/05 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
javascript中的Function.prototye.bind
2015/06/25 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
使用 Node.js 开发资讯爬虫流程
2018/01/07 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
Python3.遍历某文件夹提取特定文件名的实例
2018/04/26 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
Python字符串的常见操作实例小结
2019/04/08 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
腾讯技术类校园招聘笔试试题
2014/05/06 面试题
初中生个人学习的自我评价
2013/12/04 职场文书
保护环境建议书100字
2014/05/13 职场文书
应聘会计求职信
2014/06/11 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
公司委托书范本5篇
2014/09/20 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS