一、关于vuex刚开始学习的时候对于里面的很多名词有很陌生。很难接受这个定义,下面这个链接很好很简单通俗的解释了什么是vuex
我喜欢的vuex网址:
https://zhuanlan.zhihu.com/p/24357762
二、vuex主要是vue用来存储数据的,它可以有效的实现更改数据时有使用vue页面的数据实时更新,但是它有一个很大的缺点,就是因为vue是单页应用所以当页面刷新时vuex的数据随之也被清空了,如何实现页面被刷新而数据没有被清空呢?
在讲述之前你首先需要了解vuex的基本概念和使用方式,这里不再赘述,因为网上有很多资料,vue的官网也有很详细的说明。
使用的时候有一点要记住:action,mutation,getter都必须是函数
解决方案:
在此处需要先封装一下vuex,首先来看看封装的文件格式:
![](https://i-blog.csdnimg.cn/blog_migrate/733bd829c304a41de943925312cf639a.png)
从上图中可以清晰的看到vuex的结构,首先简单的说一下各个文件的意义:
1、action.js 独立出来vuex处理数据的文件,格式如下:
![](https://i-blog.csdnimg.cn/blog_migrate/0b89c9ad9446f8d936b1e1d21a7db06b.png)
2、getter.js 独立出来的vuex获取数据的文件,格式如下:
![](https://i-blog.csdnimg.cn/blog_migrate/edf4c0d759b7405227357e754bfb7687.png)
3、 mutation-types.js 独立出来的vuex更改数据和存储数据的文件,此文件是mutation的参数申明文件,格式如下:
![](https://i-blog.csdnimg.cn/blog_migrate/ef6c543e961a2677829b1def8fa10a5e.png)
4、mutations.js 独立出来是mutation文件,在这里处理更改和存储数据,将mutation-types在此处导入,格式如下:
![](https://i-blog.csdnimg.cn/blog_migrate/9721cb5921ae60f014c74b8844e79e46.png)
5、大boss上场啦,接下来就要说封装的关键点,index.js,先丢代码:
![](https://i-blog.csdnimg.cn/blog_migrate/8afef9ab05ca8b5dfa05621bc2880cbc.png)
6、在最外层的index.js里面做了,初始化中间件的逻辑,代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/62401eaa2ba68c3e423d4777b46199ff.png)
这里借用官方文档中对plugin进行说明,如下图:
这样写之后在页面获取和存储数据的方式是:
![](https://i-blog.csdnimg.cn/blog_migrate/cb434f389ed36281c3f56e8b7713c860.png)