Appearance
50.谈一下你对 vuex 的个人理解
1.概念
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。采用集中式存储管理应用的所有组件的状态。核心就是解决数据的共享。
以相应的规则保证状态以一种可预测的方式发生变化。
2 状态修改
- 组件中
commit('mutation')
-> 修改状态 - 组件中
dispatch(action)
(为了解决接口的复用问题,封装公共的逻辑) ->commit('mutation')
-> 修改状态
3 缺点
Vuex 中 store 只有一份,复杂的数据需要依赖于模块。Vuex 状态是一个树状结构,最终会将模块的状态挂载到根模块上。
- 模块和状态的名字冲突。
- 数据不够扁平化、调用的时候过长。
- 更改状态 mutation 和 action 的选取。
- 模块需要增加 namespaced
- 对 TS 支持并不友好
- 在 Vue3 中使用不支持 composition Api
- ......
1.4 原理
对于 Vuex3 核心就是通过 new Vue()创建了一个 Vue 实例,进行数据共享。
对于 Vuex4 核心就是通过创建一个响应式对象进行数据共享 reactive()
在 Vue3 中使用 pinia 进行状态管理,不再使用 Vuex