Skip to content

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

Released under the MIT License.