逻辑一致性检查是开发阶段对组件行为、数据流和接口契约的系统性约束,要求props显式声明类型与校验、事件命名语义化、计算属性无副作用、状态同步props输入且符合v-model约定。

逻辑一致性检查不是指运行时校验,而是开发阶段对组件行为、数据流和接口契约的系统性约束。它确保组件在不同上下文里表现可预测、不隐含副作用、不破坏单向数据流原则。
Props 接口必须显式声明且类型完整
避免使用数组形式定义 props,强制采用对象语法并覆盖所有关键校验项:
- 每个 prop 明确标注 type(如 String、Array、Object 或自定义构造函数)
- 必填项用 required: true 标记,非必填项提供安全默认值
- Object 和 Array 类型的默认值必须由工厂函数返回,防止跨实例引用污染
- 对业务语义敏感的字段(如 status、role)添加 validator 函数做枚举校验
事件命名与触发逻辑需严格对齐行为意图
子组件不直接修改 props,所有状态变更必须通过事件通知父组件。事件名应为动词短语,反映真实动作:
Vue 3 组合式 API 与 最佳实践,涵盖代码组织、useXxx 模式、组合式函数设计、Store 集成、响应式优化及功能抽取。
- 推荐:
update:modelValue、submit:form、remove:item - 禁止:
change、click、onOk等模糊或 UI 绑定过强的名称 - 事件 payload 应结构化,避免裸值;例如传
{ id, name }而非仅id - 异步操作完成后再触发事件,不因 loading 状态未更新就提前 emit
计算属性与方法职责边界清晰
计算属性只用于派生数据,不执行副作用;方法只响应明确交互,不隐式修改响应式状态:
立即学习“前端免费学习笔记(深入)”;
- 计算属性内禁止调用
this.$emit、API 请求、localStorage 写入 - 方法中若需更新多个相关状态,应封装为一个原子操作,而非分散在多个方法中
- 避免在
watch中直接修改被监听的数据源,尤其当该数据来自 props 时 - 涉及副作用的操作(如日志、埋点、路由跳转)统一收口到方法或组合式 API 的 setup 逻辑中
组件状态生命周期与外部输入保持同步
组件内部状态不应脱离 props 输入而“自行演进”,尤其在重用场景下:
- 当 props 更新时,用
watch或onUpdated同步本地缓存或表单值(需加防抖或条件判断) - 避免在
mounted中一次性读取 props 并固化为 data,导致后续 props 变更失效 - 使用
v-model的组件必须支持modelValueprop 和update:modelValue事件,符合 Vue 3 通用约定 - 对受控/非受控混合模式保持警惕——同一组件不应既响应 props 又允许用户自由编辑内部 state

















