vue.js 的 h 函数对属性执行归一化处理:props 与 attrs 按组件声明自动分离;class/style 深度合并并统一格式;事件监听器标准化(onxxx→小写键+修饰符解析);ref/key/modelvalue 等特殊 prop 被优先拦截转换。

Vue.js 中 h 函数生成 VNode 时,并不会直接把传入的属性原样塞进 VNode 对象,而是经过一套明确的属性归一化(normalization)与规范化(normalization + normalization-aware handling)流程。这个过程决定了 props、attrs、事件、class、style 等如何被识别、合并、过滤和挂载,直接影响组件行为与渲染结果。
props 与 attrs 的自动分离
当调用 h(Component, { onClick: handler, id: 'foo', disabled: true }) 时,Vue 会依据组件的 props 定义(或运行时推导)判断哪些属性属于显式声明的 prop,其余则归入 attrs:
- 若组件定义了
props: ['id', 'disabled'],则id和disabled进入props字段,onClick被识别为事件监听器,进入props.on或props.onClick(取决于 Vue 版本与写法) - 若组件未声明
id,但传入了id,它将落入attrs.id,并默认透传到根元素(除非禁用inheritAttrs: false) - 原生 DOM 事件(如
onClick、onInput)会被自动转为小写onclick并作为原生监听器绑定;而自定义事件(如onUpdate:modelValue)保留 PascalCase 形式,供emit触发
class 与 style 的深度合并策略
class 和 style 是特殊处理的属性,支持多种格式输入并自动归一化为统一结构:
vue-composition-api-best-practices
Vue 3 组合式 API 与
热门下载
相关下载
精品课程
相关推荐
/
热门推荐
/
最新课程
最新文章
