Vuex是一个vue.js应用程序开发的状态管理模式。有人和我这么解释的,vuex相当于一个钥匙信息环,你的component就相当于钥匙,钥匙挂在钥匙信息环上,你想要的公共数据就去钥匙信息环上摄取。
Vuex就相当于 vue给你一个插件 用来存放公共的数据,方便代码整合和利用。主要用于兄弟组件间的状态传递
使用地方:
适用于中大型单页应用,Vuex可能是繁琐冗余的,如果你应用简单的话,不建议使用,用简单的Store模式就行。
Store模式:
Vuex使用方法:
const store = new Vuex.Store({
state: { count: 0 }, //存储初始化对象
mutations: { increment (state) { state.count++ } } //存储事件,同步执行
getters: {getTodo:(state)=>{return state.count--;}} //相当于计算属性
actions:{increment (context) { context.commit('increment ') } } //类似于 mutations,提交的是 mutation,而不是直接变更状态。异步操作
})
接收:
store.commit('increment') //方法触发
store.state.count //获取状态对象
组件中展示状态:
vuex的状态存储是响应式的==》用计算属性中返回某个状态 (弊端:每个属性都需要频繁的导入) ==》 辅助函数
通过store选项,提供了一种机制将状态从根组件“注入”到每一个子组件中(需调用 Vue.use(Vuex)
):
辅助函数进行访问:
...mapStates
...mapGetters
...mapMutations
...mapActions