未在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 里的内容),会自动绑定到子组件的根元素上
相关推荐
zzzzzz3103 小时前
看 react-bits,不要只看“酷炫”:一套阅读动画交互组件库的框架
javascript·react.js·动效
朱 欢 庆5 小时前
云服务器附件备份到本机内网服务器
运维·服务器·前端·经验分享
支支დ11 小时前
VO by Vercel 前端特定优势:为什么它是构建 AI 应用的新范式
前端·人工智能
香芋芋圆11 小时前
AI 冲击内卷之下,普通前端如何破局?WebGIS—— 低门槛突围赛道
前端·javascript·人工智能·学习·职场发展
INS_KF12 小时前
【编程笔记】成员函数中两个 const 的区别(const Data &getData() const;)
前端·javascript·笔记
宿67412 小时前
vue3-async
前端·javascript·vue.js
YXWik612 小时前
记录前端请求接口在浏览器请求响应的Preview和Response展示的一样的问题
前端
2501_9289962212 小时前
GPT-4o换DeepSeek迁移成本多少?中科热备解析API聚合平台技术账本
前端·数据库·人工智能
东风破_12 小时前
从跨域到 WebSocket:前端跨域方案、SSE 与双向实时通信详解
前端·后端
原则猫13 小时前
TS 类型工具
前端