未在props中声明的属性

我们用一个自定义表单input组件实现v-model来解释这个问题

javascript 复制代码
Vue.component('base-input', {
  inheritAttrs: false,
  props: ['label', 'value'],
  template: `
    <label>
      {{ label }}
      <input
        v-bind="$attrs"
        v-bind:value="value"
        v-on:input="$emit('input', $event.target.value)"
      >
    </label>
  `
})
javascript 复制代码
<base-input
  label="Username:"
  v-model="username"
  required
  placeholder="Enter your username"
></base-input>
  1. 设置 inheritAttrs: false关闭默认的根元素属性继承行为 ,避免 $attrs 里的属性被自动绑定到根元素 <label> 上。
  2. 手动写 v-bind="$attrs" 并放在 <input> 上:明确告诉 Vue,把 $attrs 里的属性绑定到 <input> 上(这才是这些属性真正该去的地方)。

默认情况下(即不设置 inheritAttrs: false 时):

  • 父组件传递给子组件、且子组件未在 props 中声明的属性(也就是 $attrs 里的内容),会自动绑定到子组件的根元素上
相关推荐
刘发财19 分钟前
弃用html2pdf.js,这个html转pdf方案能力是它的几十倍
前端·javascript·github
牛奶3 小时前
2026年大模型怎么选?前端人实用对比
前端·人工智能·ai编程
牛奶3 小时前
前端人为什么要学AI?
前端·人工智能·ai编程
Kagol5 小时前
🎉OpenTiny NEXT-SDK 重磅发布:四步把你的前端应用变成智能应用!
前端·开源·agent
GIS之路6 小时前
ArcGIS Pro 中的 notebook 初识
前端
JavaGuide7 小时前
7 道 RAG 基础概念知识点/面试题总结
前端·后端
ssshooter7 小时前
看完就懂 useSyncExternalStore
前端·javascript·react.js
格砸8 小时前
从入门到辞职|从ChatGPT到OpenClaw,跟上智能时代的进化
前端·人工智能·后端
Live000008 小时前
在鸿蒙中使用 Repeat 渲染嵌套列表,修改内层列表的一个元素,页面不会更新
前端·javascript·react native
柳杉8 小时前
使用Ai从零开发智慧水利态势感知大屏(开源)
前端·javascript·数据可视化