You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue自定义组件未声明的属性为何自动应用到内部q-input上?

你的猜测完全正确,这是Vue 3默认的「非Prop属性透传」机制带来的效果,具体逻辑如下:

  • 当自定义组件只有单个根元素时,所有没有被组件声明为props、也没有被组件显式消费的属性、事件监听器,都会被自动附加到这个根元素上。
  • 你封装的RobsInput组件模板只有<q-input>一个根节点,rules和lazy-rules既没有在组件的props字段中声明,也没有被你手动处理过,因此会被Vue自动透传给根元素q-input,和直接给q-input加这两个属性的效果完全一致,所以自然可以正常生效。

补充两个相关的常用特性:

  • 如果不需要默认透传行为,可以在组件的配置项中添加inheritAttrs: false关闭全局透传,之后你可以按需通过v-bind="$attrs"手动将未声明的属性绑定到任意目标元素上。
  • 如果你的组件是多根节点结构,Vue不会自动做属性透传,必须手动给需要继承属性的元素添加v-bind="$attrs"才能实现相同效果。

内容的提问来源于stack exchange,提问作者Rob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:45:05