未在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 里的内容),会自动绑定到子组件的根元素上
相关推荐
问道飞鱼8 分钟前
【前端知识】React生态你了解多少?
前端·react.js·前端框架·生态
Pu_Nine_98 分钟前
前端SSE(Server-Sent Events)实现详解:从原理到前端AI对话应用
前端·langchain·sse·ai对话
optimistic_chen18 分钟前
【Vue3入门】Pinia 状态管理 和 ElementPlus组件库
前端·javascript·vue.js·elementui·pinia·组件
kgduu19 分钟前
js之网络请求与远程资源
开发语言·javascript·网络
酉鬼女又兒21 分钟前
零基础入门前端JavaScript 核心语法:var/let/const、箭头函数与 setTimeout 循环陷阱全解析(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·蓝桥杯
Bling_Bling_125 分钟前
【无标题】
前端·网络协议
We་ct25 分钟前
React Diff & Key 核心解析
开发语言·前端·javascript·react.js·前端框架·reactjs·diff
哥本哈士奇26 分钟前
Vue 3 快速入门:从零搭建前后端 CRUD 应用
前端·javascript·vue.js
biubiubiu070627 分钟前
Agent 是如何拥有“手脚”的(ReAct 运行流程)
开发语言·前端·javascript
摸鱼的春哥31 分钟前
Agent教程21:知识图谱🕸,让AI🤖学会联想
前端·javascript·后端