前端知库

事件驱动 UI 怎样避免状态互相覆盖?

设计事件、命令和状态更新边界,处理异步完成顺序、重复事件和过期响应。

参考答案

事件适合表达“发生了什么”,命令适合表达“希望执行什么”,状态则描述当前事实。把三者混成无类型字符串事件,容易出现重复处理、循环触发和不同模块互相覆盖。

异步事件要带上实体 ID、版本或请求 ID,完成顺序不确定时只接受仍属于当前状态的结果。事件处理器要可取消、幂等,并明确谁拥有最终状态。

跨组件通信优先选择清晰的 props、状态存储或路由契约;CustomEvent 适合明确的 DOM 边界,不应成为整个应用的隐形全局总线。