前端面试 P061:何时引入全局状态管理
Showing the original in Chinese (China)
来源:方格前端讲面试 · 19.Vue何时需要全局状态,7 分 45 秒。
回看定位:00:47 全局状态 · 06:14 不要滥用
先确定状态归属和寿命
局部输入、弹窗开关等通常留在组件;父子共享可以提升到共同父级;某个组件分支的主题或服务可用 provide/inject;跨页面共享、需要明确更新接口与调试记录的状态可考虑 Pinia。
层级超过两层并不是必须上全局库的阈值,props 传递也不自动是坏设计。真正要比较的是消费者范围、修改者、持久化、重置和调试需求。
事件不等于当前状态
事件总线表达发生了什么,新订阅者通常收不到过去的事件;store 表达目前状态,消费者可以随时读取。购物车数量、会话信息等通常需要明确的当前值,而不只是瞬时广播。
共享不是全体重渲染
响应式更新通常取决于实际读取与组件结构,并非 store 任一字段改变就强制所有组件刷新。全局可读也不意味着任意组件都应该无约束修改。
SSR 与数据安全
共享范围应是应用或请求,而不是默认整个服务器进程。用户数据不得跨请求泄漏;鉴权与权限仍由服务端执行,前端 store 只是展示与操作状态。
本集“按需要选择,避免滥用”的方向正确。不要只按项目大小决定是否使用库;同样规模的应用也可能有完全不同的状态共享结构。
关联:前端面试 P054:provide、inject 与跨层级依赖、前端面试 P040:发布订阅、事件总线与退订、前端面试 P062:Pinia 创建、实例范围与使用。