1. Vuex 是什么?
答:专门在 Vue 中实现集中式状态(数据)管理的一个 Vue 插件,对 vue 应 用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方 式,且适用于任意组件间通信。
Github 地址: https://github.com/vuejs/vuex
2. 什么时候使用 vuex?
2.1 多个组件依赖同一状态;
2.2 来自不同组件的行为需要变更同一状态
3.github 个人练习案例
https://github.com/chb88888/vuex_demo
4. vuex 工作原理
5.Vuex 核心概念和api
5.1 state
1)vuex管理的状态对象
2)它应该是唯一的
3)示例代码:const state = {xxx: initValue}
5.2 actions
1) 值为一个对象,包含多个相应用户动作的回掉函数
2)通过 commit()来触发 mutation 中函数的调用,间接更新 state
3)触发 actions 中的回调 在组件中:$store.dispatch('对应的 action 回调名')触发
4)可以包含异步代码(定时器、ajax等)
5)示例代码:const actions = {
zzz({commit, state}, data1) {
commit('yyy', data1)
}
}
5.3 mutations
1)值是一个对象,包含多个直接更新 state 的方法
2)谁能调用 mutations 中的方法?如何调用 在 action 中使用:commit('对应的 mutations 方法名') 触发
3)mutations 中方法的特点:不能写异步代码、只能单纯的操作 state
4)示例代码:const mutations = {
yyy(state, {data1}) {
// 更新 state 的某个属性
}
}
5.4 getters
1)值为一个对象,包含多个用于返回数据的函数
2) 如何使用?—— $store.getters.xxx
3)示例代码: const getters = {
mmm (state) {
return state.msg + '!'
}
}
5.5 modules
1)包含多个 module
2)一个 module 是一个 store 的配置对象
3)与一个组件(包含有共享数据)对应