当前位置: 首页 > news >正文

用文件传输协议登录网站做网页制作怎么样

用文件传输协议登录网站,做网页制作怎么样,网络公关公司排名,成都专业建站公司1. 核心概念理解什么是“透传 Attributes”?透传 attribute 是指传递给组件但未在 props 或 emits 中声明的 HTML 属性或事件监听器(如 class、style、id、click 等),这些属性会自动“穿透”到组件内部的根元素上。示例&#xff1…

1. 核心概念理解

什么是“透传 Attributes”?

        透传 attribute 是指传递给组件但未在 props emits 中声明的 HTML 属性或事件监听器(如 classstyleid@click 等),这些属性会自动“穿透”到组件内部的根元素上。

示例:

<MyButton class="large" @click="onClick" />

<MyButton> 未声明 class @click,它们将被自动应用到其模板的根元素上。

2. Attributes 继承机制

单根节点组件的自动继承

当组件只有一个根节点时,所有透传 attribute 自动绑定到该根元素。

案例演示:
<!-- 子组件 MyButton.vue -->
<template><button class="btn">Click Me</button>
</template>
<!-- 父组件使用 -->
<MyButton class="large" id="submit-btn" @click="handleClick" />

✅ 渲染结果:

<button class="btn large" id="submit-btn">Click Me</button>

🔍 说明class 被合并,id 直接继承,@click 监听器也附加到 <button> 上。

class 与 style 的合并规则

原有值透传值最终结果
"btn""large""btn large"
:class="{ active: true }"class="highlight"合并生效

📌 注意:Vue 智能合并多个来源的 class style

v-on 监听器继承

  • 父级的 @click → 子组件根元素

  • 子组件自身 v-on:click 也会触发

  • 多个监听器按顺序执行

<template><button @click="innerClick">Inner Button</button>
</template><!-- 父组件调用 -->
<MyButton @click="parentClick" />

🎯 执行顺序:innerClick parentClick

3. 深层组件继承(嵌套场景)

组件可作为“透明管道”,将 attributes 逐层向下传递。

<!-- MyButton.vue -->
<template><BaseButton />
</template><!-- BaseButton.vue -->
<template><button>Base</button>
</template>
<!-- 父组件 -->
<MyButton class="primary" @click="onClick" />

✅ 结果:class @click 都透传至 <BaseButton><button> 根元素。

📌 规则:只有未声明为 propsemits 的属性才会继续透传。

4. 禁用 Attributes 继承

使用 inheritAttrs: false

适用场景:需要把 attributes 应用到非根元素上。

<script setup>
defineOptions({ inheritAttrs: false })
</script><template><div class="btn-wrapper"><button class="btn" v-bind="$attrs">Click Me</button></div>
</template>
<!-- 调用 -->
<MyButton class="large" @click="onClick" />

✅ 渲染结果:

<div class="btn-wrapper"><button class="btn large" onclick="...">Click Me</button>
</div>

$attrs 包含除 props/emits 外的所有 attribute。

5. $attrs 对象详解

数据结构示例

// 输入:
<MyButton foo-bar="value" @click="onClick" data-test="123"
/>// $attrs 内容:
{'foo-bar': 'value',onClick: Function,'data-test': '123'
}

📌 注意事项:

  • 键名保持原始大小写(如 'foo-bar'

  • 事件监听器以函数形式暴露(onClick

  • 不是响应式对象 ❌(不能 watch)

6. 多根节点组件的行为

多根组件不支持自动 attribute 透传,必须显式绑定 $attrs,否则报错。

❌ 错误示例(运行时报错):

<template><header>Header</header><main>Content</main><footer>Footer</footer>
</template>
<CustomLayout class="layout" @click="onClick" />

⚠️ 报错:Expects exactly one root element or template.

✅ 正确做法:

<template><header>Header</header><main v-bind="$attrs">Content</main><footer>Footer</footer>
</template>

或选择性绑定特定属性:

<main :class="$attrs.class" @click="$attrs.onClick">Content</main>

7. 在 JavaScript 中访问透传 Attributes

使用 useAttrs() API(推荐)

<script setup>
import { useAttrs, onUpdated } from 'vue'const attrs = useAttrs()// 注意:$attrs 不是响应式的
onUpdated(() => {console.log('Current attrs:', attrs)
})
</script>

非 script-setup 写法

export default {setup(props, ctx) {console.log(ctx.attrs) // 透传 attributes}
}

📌 提醒:不可依赖 $attrs 响应性;需响应式请用 props

8. 图表示意:Attributes 透传流程图

9. 实际案例分析

✅ 案例一:基础透传(单根 + class 合并)

<!-- ChildButton.vue -->
<template><button class="default-btn">Submit</button>
</template>
<!-- Parent.vue -->
<ChildButton class="success" />

➡️ 输出:

<button class="default-btn success">Submit</button>

✅ 案例二:禁用继承并手动分发

<!-- WrappedInput.vue -->
<script setup>
defineOptions({ inheritAttrs: false })
</script><template><div class="input-group"><input type="text" v-bind="$attrs" /></div>
</template>
<!-- 使用 -->
<WrappedInput placeholder="Enter name" class="custom-input" @input="onInput" 
/>

➡️ 结果:

<div class="input-group"><input type="text" placeholder="Enter name" class="custom-input" @input="...">
</div>

✅ 案例三:多根组件显式绑定

<!-- Layout.vue -->
<template><header>Top</header><main v-bind="$attrs">Main Content</main><footer>Bottom</footer>
</template>
<Layout class="dark-mode" @click="toggleTheme" />

➡️ <main> 元素获得 class click 事件。

10. 总结归纳

特性行为说明
单根组件attributes 自动继承至根元素
多根组件必须手动 v-bind="$attrs",否则警告
class/style与本地值进行智能合并
v-on 事件透传并叠加执行
inheritAttrs: false关闭自动继承,实现精准控制
$attrs访问所有透传属性(非响应式)
useAttrs()Composition API 中获取 $attrs

11. 关键知识点详解

  • 透传 attribute 的继承机制
    Vue 自动将未声明的 attribute 添加到组件根元素,适用于 class、style、id 等。

  • $attrs 的作用与限制
    包含所有未被消费的 attribute,可用于手动绑定,但非响应式,不可侦听变化。

  • 多根节点的绑定要求
    多个根元素时必须显式使用 v-bind="$attrs",否则会抛出运行时警告。

http://www.dtcms.com/a/542476.html

相关文章:

  • 网站改版案例成都二次感染最新消息
  • 简洁大气的网站设计个人网站可以做推广不
  • 计网4.3 IPV6地址
  • 网站建设制作解决方案丽水微信网站建设哪家好
  • 个人网站设计案例游戏网站建设网
  • 苏州网络网站建设网站手机端页面怎么做的
  • 免费网站申请注册软装素材网站有哪些
  • 英一2014年真题学习笔记
  • 利用装饰器对函数参数强制执行类型检查:Python高级技巧详解
  • 网站seo优化是什么意思wordpress 自定义主题
  • 网站建设谁家好建设网上商城网站
  • SR-Scientist: 利用 ai agent 进行科学公式的发现
  • 5.虚拟化技术(二)
  • 档案信息网站建设的意义注册会计师考试科目
  • 帮企业建设网站和推广网站怎么导入模板到wordpress
  • 专门做奢侈品的网站网络营销策略的内容
  • phpmysql网站开发项目式教程苏州网站seo优化
  • Linux回环设备:块与网络驱动全解析
  • linux学习--总线设备驱动模型
  • 佛山 网站建设培训班成品app直播源码
  • 开发网站和application2019做网站图片用什么格式
  • OpenHarmony内核中HDF内核态驱动khdf编译流程
  • 旅游商城网站订单处理网站建设所需美工
  • 深圳学校网站建设公司网站首页列表布局设计
  • 网站降权了怎么办虾皮购物网站怎么做
  • MC SDK V6.x 软件HSO功能ADC采样设计说明 LAT1560
  • 域名备案 网站备案淘宝网站推广方案
  • 华尔街之狼,与AI共舞
  • 图书馆管理网站建设logo菏泽炫佑网站建设
  • 网站营销方案设计公司怎样才能制做免费网站