在Vuex中 store就相当于一个仓库容器,里面可以存取数据
1.Vue项目的结构,和store位置
在使用store的时候我们需要创建一个store的file文件,在里面写一个js用来寄存他的读取状态
2.vuex的核心概念
vuex中有5个核心概念 分别是 state,getters,mutations,acitons,module
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex);
const store = new Vuex.Store({ state:{ }, getters:{ }, mutations:{ }, actions:{ }, Module:{ } })
|
具体介绍可以去看文档 State | Vuex
store的具体使用流程
State单一状态树让我们能够直接地定位任一特定的状态片段,在调试的过程中也能轻易地取得整个当前应用状态的快照。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex); const store = new Vuex.Store({ state: { testFlag:false, testList:{}, } })
Getter用来在js页面中读取你要的状态
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex); const store = new Vuex.Store({ state: { testFlag:false, testList:{}, } getter:{ getTestFlag:state =>state.testFlag, getTestList:state =>state.testList, } })
js页面的读取操作 (记得使用mapGetters 辅助函数映射局部属性) 具体看文档
import {mapGetters} from 'vuex'
export default{ name: "test-getter", created(){ if(this.getTestFlag){ } if(this.getTestFile==null){ } } }
|
更改 Vuex 的 store 中的状态的唯一方法是提交 mutation,在store中的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex); const store = new Vuex.Store({ state: { testFlag:false, testList:{}, }, getter:{ getTestFlag:state =>state.testFlag, getTestList:state =>state.testList, }, mutations:{ SetTestFlag(state,data){ state.testFlag=data } SetTestList(state,data){ state.testList=data } } })
在这里我们需要对state赋值,所以单独一个js文件用来写入state状态改变他的值
export default { name:"test-mutation", created(){ this.$store.commit("SetTestFlag",true) this.$store.commit("SetTestList",this.lists); }, data(){ lists:[{ name:"我是测试数据用来放入SetTestList", code:"0", }] } }
|
到这里store的基本使用已经可以完成
Action和Module本人使用较少,本文给入门的同学参考,有的了解这个的大佬也可以补充一下。