概念
Vuex 是一个专为vue.js
应用程序开发的状态管理模式
,说白了就是一个共享仓库
初始化
- 下载vuex
npm install vuex --save
- 使用vuex 在
src
目录下新建store
文件夹,在其下新建store.js
,store.js
就是存放我们vuex的 - 在
store.js
中引入vue
和vuex
,并使用vuex
使用state(默认值)
初始state
state 里存放的就是货物,我们初始数据都是放在这里的
引用state
新建一个vue
文件
store.js
,并注册使用,然后我们就可以通过$store.state.?
来获取我们的初始数据,这时数据(状态)就可以展示出来了.
刚才那个获取数据太过繁杂,接下来我们可以使用下面几种方法来简化获取的方式.
- 通过计算属性返回某个值
页面显示 - 通过
computed:mapState([])
获取,想要使用mapState
,需要先引入进来,然后通过computed:mapState(['名'])
可以引入与state
子节点名称相同的,[ - 通过对象展开运算符
...mapState(['名'])
获取,当局部计算属性也需要混合使用时,
Mutation (同步)改变值###
Mutation就是改变货物,改变状态和值,相当于事件注册,同时改变store
中状态的唯一方法就是通过commit
提交mutation
基本使用
mutations:{}
,里面写改变的规则
payload
$store.commit
可以传入额定的参数即mutation
得载荷(payload)
- 直接传参数
- 传入对象
对象风格的提交 - 使用
...mapMutations
在方法里调用...mapMutations
,同样的要想使用需要先引入import { mapState ,mapMutations} from 'vuex'
,然后再使用,至于传参,只要遵守传参的定义就行
Action (异步)改变值
类似于mutation
,不同的是Action提交的是mutation,而不是直接改状态,mutation像是事件注册,需要相应的触发条件,而Action就是管理触发条件的,
Action
函数接收一个与store
实例具有相同方法和属性的context
对象,因此可以通过调用context.commit
提交,通过context.state
和context.getters
来获取state
和getters
使用
commit
多次
触发
通过$store.dispatch('名')
触发
异步
使用辅助函数...mapAcion(['名'])在组件中分发
getter
定义一组数据