🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### vuex有哪几种属性? * `State` :`vuex`的基本数据,用来存储变量 * `Getter` :从基本数据`state`派生的数据,相当于`state`的计算属性 * `Mutation` :提交更新数据的方法,必须是同步的(需要异步则使用`action`)。每个`mutation`都有一个字符串的事件类型(`type`)和一个回调函数(`handler`) * `Action` :和`mutation`的功能大致相同,不同在于 * `action`提交的是`mutation`,而不是直接变更状态 * `action`可以包含任意异步操作 * `Module` :模块化`vuex`,可以让每一个模块拥有自己的`state`,`mutation`,`action`,`getter`,使得结构清晰,方便管理 ## dispatch 和 commit commit=>mutations,用来触发同步操作的方法。 commit 推送一个mutation dispatch =>actions,用来触发异步操作的方法。dispatch 推送一个action dispatch:含有异步操作,例如向后台提交数据,写法: this.$store.dispatch('action方法名',值) commit:同步操作,写法:this.$store.commit('mutations方法名',值) 更改 Vuex 的 store 中的状态的唯一方法是提交 mutation ## 如何理解getters **getters从表面是获得的意思,可以把他看作在获取数据之前进行的一种再编辑,相当于对数据的一个过滤和加工**。 getters就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。 例如:要对store.js文件中的count进行操作,在它输出前,给它加上100。 首先要在store.js里Vuex.Store()里引入getters ~~~ getters:{ count:state=>state.count+=100 } ~~~ ## 1.如何在Mutations里传递参数 先store.js文件里给add方法加上一个参数n ~~~ mutations: { INCREMENT(state,n) { state.count+=n; }, DECREMENT(state){ state.count--; } } ~~~ 然后在HelloWorld.vue里修改按钮的commit( )方法传递的参数 ~~~ increment() { return this.$store.commit("INCREMENT",2); }, decrement() { return this.$store.commit("DECREMENT"); } ~~~