文章 · 前端工程

状态管理可以有多轻

状态管理被过度复杂化了。多数项目真正需要的只有三件事:一份共享数据、一个改它的入口、一个能追踪的变更来源。

先问需不需要全局

只有跨页面、跨层级、且多处读写的数据才值得放进全局。其余留在组件里,代码量会少一半,理解成本也低得多。

模块级单例往往就够了

一个模块作用域里的响应式对象,加上几个操作它的函数,就构成了一份全局状态。它不依赖任何框架特性,也天然跨组件共享。

改状态必须走函数

不要让组件直接改共享对象的字段。所有写入收进函数里,将来要加日志、加校验、加持久化时,只需要改一处。

ts
const state = reactive({ dark: false })

export function useUi() {
  return {
    state,
    toggleDark: () => (state.dark = !state.dark),
  }
}

评论6

访客

登录后参与评论,你的发言会署上自己的名字。

  • 林深

    林深作者@linshen2026-08-03

    先占个位:文里的数字都是本地实测的,测试环境写在文末备注里,有疑问直接在这儿回。

  • 严冬

    严冬@yandong2026-08-05

    状态管理这块我更倾向于能不放全局就不放,理解成本差很多。

  • 程野

    程野@chengye2026-08-06

    这份清单可以直接拿去做评审模板了,覆盖面挺全。

  • 姜堰

    姜堰@jiangyan2026-08-07

    命名那一条看着简单,但确实是评审里最常被提出来的问题。

  • 童语

    童语@tongyu2026-08-08

    边界情况那段写得好,很多问题都是顺利路径跑通了就当完成了。

  • 江辰

    江辰@jiangchen2026-08-09

    刚好在排查同类问题,看完直接照着改了一版,省了一下午。