说明
vuex是一个专门为vue.js设计的集中式状态管理架构。
比如变量的值,就是状态
而且是响应式的,内部有监听,一旦发生变化会更新所有引用的地方。
背景
1、多个组件都需要共享
比如我们有几个页面要显示用户名称和用户等级,或者显示用户的地理位置。
2、父子组件层级关系太多的
3、token 令牌,用户登录后由服务器发放给用户,用户后续的请求必须带上token
如果我们不把这些属性设置为状态,那每个页面遇到后,都会到服务器进行查找计算,返回后再显示。
Vuex的状态管理
把数据交给一个全局的对象进行管理,要获增删改查就调用对象的方法,任意一个地方都可以获取这个对象并使用。
数据都是响应式的,改动后大家引用的地方都会跟着一起变。
开发时还可以通过官方的插件 Dev Tool 查看数据,方便开发管理。
单一状态树
可以想象成一个公司,数据(状态)就是员工。
设计原则就是尽量用单一的状态树来储存数据(建议只开1个公司),你也可以用多个状态树(多创建几个vuex即可,相当于多开几家公司)。
那么单一的话,很多不同模块的数据不是混一起了?后面可以通过模块module划分,相当于公司分部门,员工分到各个部门。
基本流程
=====================
安装
方法一:脚手架创建时勾选
创建项目时,选择了Vuex,就会自动安装和配置,很方便。
正常安装后,src里面就会多了一个store文件夹,里面有一个index.js,里面就是vuex的配置
方法二:手动安装
Vuex 3 和 vue2.x
通过npm安装
npm i vuex
Vuex 4 和 vue3.x
npm i vuex@next
[
](https://next.vuex.vuejs.org/installation.html#npm)
DevTools
=====================
基本使用
1、创建状态仓库(Store对象)
查看 https://www.yuque.com/yejielin/mypn47/sibt0v
2、Vue引入使用
查看 https://www.yuque.com/yejielin/mypn47/fzn1es
后面还可以再封装,见下getters
3、计算属性 getters
查看 https://www.yuque.com/yejielin/mypn47/vbmit3
4、(同步)修改变量 mutations
查看 https://www.yuque.com/yejielin/mypn47/dcbepz
5、(异步)修改变量 actions
查看 https://www.yuque.com/yejielin/mypn47/va2zxg
6、分模块 modules
查看 https://www.yuque.com/yejielin/mypn47/okpibh
=====================
刷新浏览器问题(内存)
由于vuex是把数据放内存的,因此刷新浏览器,vuex的储存的数据就会消失。
项目中为了解决这个问题(比如用户成功登录后,vuex储存用户的信息,但是用户刷新页面就没了),会通过浏览器的Local Storage等技术,持久化储存数据。
即使用户刷新,Vuex也可以从这些地方取数据。
但什么时候能保证用户刷新后就去取呢?
可以把vuex 取的方法写在项目的 main.js 里面,因为每次刷新都会重新从这里开始运行,
./store/index.js