Vuex
2019-01-10 本文已影响0人
cj_jax
是什么?
- Vuex 是专门为Vue提供的状态管理工具
- 状态即数据
- 状态管理就是管理 Vue组件中的数据
- 内部机制: Vuex采用集中式的方式,来统一管理 Vue 中需要共享的数据( 也就是:多个组件中都会用到的数据 )
- Vuex中的数据也是响应式的
- Vuex 借鉴了 Flux、Redux 等状态管理模式。前端最早的状态管理思想就是 React 中的 Flux
有什么用?
- 复杂项目中,解决组件通讯的难题
什么时候用?
- 1 不要觉得 Vuex 很强大就使用!!!这是一个错误的观点
- 2 小项目不需要使用 Vuex
- 3 只有 大型项目 或者 开发过程中觉得组件通讯太多,管理组件外的数据太麻烦,此时就可以使用Vuex
- 4 如果你不知道是不是该用 Vuex ,那么就是不需要!!!
Vuex中的核心概念
store
- 1 一个Vue项目中只能有一个store(仓库)
- 2 store中提供了:1 共享的数据(state) 2 操作数据的方法
- 3 如果想要修改 store 中的state,应该通过 store 提供的方式,而不能手动修改!!!
state
- 状态即数据
- state 也就是原来 Vue 中的 data
- 一个Vue项目中应该只有一个state
getters
- Vuex 的计算属性
- 使用方式 与 计算属性一样
- 创建的时候是一个方法
- 使用的时候是一个属性
$store.getters.leftCount
mutations
- 作用:提供修改 state 的方法
- 说明:数据只能通过 mutations 中提供的方法来修改数据
- 注意:mutations中只能同步修改数据!!!
actions
- 作用:封装异步操作,调用 mutations 修改数据
- 区分 同步和异步 最本质的区别: 异步操作放在 actions 中能用 devtools 追踪状态变化;如果放在 mutations 中是无法追踪状态变化的