之前一直搞不懂Vuex怎么用,但学了Redux之后,发现Vuex简单好多啊。
安装
1 | npm install vuex --save |
前提是已经搭建好了其他vue的项目环境,开始!
使用
目录结构
效果
index.vue
1 | <template> |
componentA.vue
1 | <template> |
componentB.vue
1 | <template> |
showDetail.vue
1 | <template> |
index.js
1 | import Vue from 'vue'; |
store.js
1 | import Vue from 'vue'; |
整体思路
好了,基本代码展示完,说一下使用思路。可以看到加法和减法是两个不同的组件,它们运算后的结果又展示在另一个组件,这些统计组件之间的通信通过vuex来实现是比较方便的。先说一个简单步骤:
新建一个store.js文件,在这个js文件中有state,mutations,actions等
在入口文件(此项目是index.js)中使用store
想要在页面中修改数据只能通过dispatch
来触发对应的action,然后action的commit又会触发mutations中的方法来修改state。
Vuex只能通过mutations中来修改state,而要在页面中展示state不能通过data赋值,需要使用computed来实现。
改进
现在我们的代码看起来不够好,改一下吧。
新建一个vuex文件夹,把state,mutations,actions等独立出来
1 | //state.js |
1 | //mutations.js |
1 | //actions.js |
1 | //store.js,记住改index引用store.js的路径 |
最后我们使用一下mapState
1 | //showDetail.vue |
可以看到,使用mapState可以让我们不用每次都用return语句来返回数据,省了不少事。更深入的之后再说了。