- 状态管理模式 + 库
- 参考官方文档:Vuex 是什么? | Vuex (vuejs.org)
1. 多个组件之间共享数据,并且共享的数据是响应式的,即数据的变更能及时渲染到模版
2. vuex 会集中管理所有组件的状态
将所有组件之间需要共享的数据提取出来存储在一个位置让 vuex 集中管理
3. 安装 vuex
npm install vuex@next --save
4. 核心概念
state:状态对象,将共享数据集中定义在状态对象中
mutations:用于修改共享数据(一个事件),必须是同步函数
不能直接修改共享数据,只能通过 mutations 来修改
actions:类似于mutations,但是可以包含异步操作,通过调用 mutations?来改变共享数据
Vue.use(Vuex);
state: {
? ?name: 'Ghost'
}
{{$store.state.name}}
在 mutations 中定义函数,修改共享数据
// 将形参newName的值赋给共享数据state.name,页面会立即响应新的name值
mutations: {
? ?setName(state, newName){
? ? ? ?state.name = newName;
? }
}
?
// mutations中定义的函数不能直接调用,需要this.$store.commit('方法名', 参数)
methods: {
? ?handleUpdate() {
? ? ?this.$store.commit('setName', '李四') # state不需要传,会自动传
? }
}
通过上下文对象 context.commit('mutations中的方法', 参数) 调用指定方法
传入的参数是在服务端返回的数据 res.data 中获取的
在入口页面 App.vue 中调用 actions 中的方法修改共享数据 name
定义一个按钮,给按钮绑定单击事件 @click=handleCallActions
在组件的 methods 中定义事件 handleCallActions,在方法中通过 this.$store.dispatch('方法名') 调用 actions 中的指定方法