Vuex 的应用
要想使用vuex 第一步要先安装vuex
命令行 : npm i vuex -S
安装后 在 src 目录下创建一个store 用来更改数据,在文件夹下面创建两个文件一个是index.js 文件 ,用来导出。
另一个是state 用来定义和管理数据
![](https://img.haomeiwen.com/i13760735/64579a0ce08b03f9.png)
在index.js 中引入Vue 和 Vuex
同时引入本地的state
![](https://img.haomeiwen.com/i13760735/6359552faf2d1189.png)
创建好store后 需要在main.js 中引入store 并将store写入vue实例中
![](https://img.haomeiwen.com/i13760735/72e84152abf00c69.png)
然后可以直接在自己的要显示的 界面中用到store里的state 我在这里用Home.vue
当我们在computed 中写count 方法的时候 this.$store.state.count 的值就是我们在state中定义的count
要想读取到this count 不可以写成箭头函数 必须写成 count () { }
在vuex 中自带的mapState 可以直接返回数据。 用 ...mapState(['count'])
此时需要在用到的页面从vuex中引入mapState
![](https://img.haomeiwen.com/i13760735/e53bb3455fb4ea87.png)
在数据修改的时候有多种方式,函数可以直接写在Home.js 中 还可以写在store中
在vuex 有一个 mutations
在vuex严格模式下唯一可以修改state值的地方
用来写方法。 将从state读出的数据直接在mutations中来进行修改并且返回。
![](https://img.haomeiwen.com/i13760735/938bf27686e30aac.png)
要调用的时候可以在 Home.vue 的methods 中添加一个add () {}方法 用
this.$store.commit('inc') 来绑定 这是手动绑定 在react 中可以自动绑定。但是vue 不可以 自动绑定
这句话也可以改成
...mapMutation['inc'] 里面是字符串
![](https://img.haomeiwen.com/i13760735/428381008b517350.png)
当在组件中 onclick中调用的时候 可以用 @click.native = "inc()"
后面可以写括号,并且可以传递参数,会传递给mutations 方法的 第二参数
mutations 中的方法最多有两个参数
第一个就是state
第二个就是传递进来的参数。如果要传递多个参数 应该使用对象的方式传递。
多写的参数不识别