yaodebian @ yaodebian.me

在vue中,为什么我们需要用 vuex/pinia 来管理状态

Nov 15, 2025

store的用途主要是用于在SPA等场景中去做全局的状态管理,那其实有人会问,为什么不直接用windows呢,这不就是全局状态吗?

我个人觉得可以从两个方面展开:

  • Vue的响应式机制
  • 可维护性与debug

Vue 响应式机制

Vue本身是一个响应式框架,当我们的状态发生变化时,需要去同步更新视图。如果用windows,则无法直接办到。

当然,我们可以通过 difineProperty/Proxy 来实现,但是这样做的话:

  • 没有命名空间,仍然容易因为命名冲突而导致问题
  • 无法做到状态切换路径的跟踪与调试

可维护性与debug

刚刚也说过了,windows一是无法做到模块隔离,二是无法做到状态切换路径的跟踪与调试。所以需要单独的某个能力来解决,也就有了 vuex 和 pinia。它们提供了以下能力:

  • 模块隔离:可以将状态分成多个模块,每个模块都有自己的 state、getter、action,避免命名冲突。
  • 状态切换路径的跟踪与调试:通过兼容 vuex/pinia 的 devtools 插件,可以方便地查看状态的变化路径,方便调试。即
    • 我在哪里被变更了
    • 变更前是什么值
    • 变更后是什么值
> comment on mastodon / twitter
>
CC BY-NC-SA 4.0 2021-PRESENT © Anthony Fu