Vue组件入门(十一)$attrs

简介: Vue组件入门(十一)$attrs

前言


上一章我们说到,对于单个根元素的子组件来说,使用时在其上面声明的class、style以及事件等,会发生一个透传的行为。但有些时候,我想对透传的属性进行一个自定义继承。这个时候要怎么做呢?这就引出了我们今天的主角--$attrs。下面我们来看一看。


$attrs


我们可以通过$attrs访问透传进来的属性,不仅如此,$attrs 里面还包含了除组件所声明的 propsemits 之外的所有其他属性。


这样我们就可以自定义继承了。


<span>所有属性: {{ $attrs }}</span>
复制代码


但是,还有一点要注意的是,我们还要禁止组件的默认透传行为,这个时候我们就可以通过inheritAttrs属性,设为 false 来进行禁用。


如果使用了<script setup>,就需要一个额外的 <script> 标签来添加这个选项:


<script>
export default {
  inheritAttrs: false
}
</script>
<script setup>
// ...setup 部分逻辑
</script>
复制代码


注意:

  • 透传的属性会保留大小写,所以像这 title-n 样的一个 属性 需要通过 $attrs['title-n'] 来访问。
  • 透传的v-on 事件监听器可以通过$attrs.onClick进行访问。


对于多根节点的组件,没有自动的透传行为。如果$attrs没有显示绑定的话,vue会进行一个警告。


所以,对于这种情况的话,需要对其显示绑定:


<header>...</header>
<main v-bind="$attrs">...</main>
<footer>...</footer>
复制代码


js中访问$attrs


如果想要在<script setup>访问透传下来的属性的话,需要通过vue 提供的 useAttrs() API来进行访问透传的所有属性:


<script setup>
import { useAttrs } from 'vue'
const attrs = useAttrs()
</script>
复制代码


有一点需要需要注意的是,useAttrs()得到的attrs并不是响应式的,也就意味着你不能通过侦听器监听他的变化。


所以,需要响应式的话,建议还是props,或者在onUpdated()声明周期内,获得最新的$attrs。

相关文章
|
1月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
208 2
|
4月前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
645 0
|
3月前
|
JavaScript 安全
在 Vue 中,如何在回调函数中正确使用 this?
在 Vue 中,如何在回调函数中正确使用 this?
147 0
|
3月前
|
人工智能 JSON JavaScript
VTJ.PRO 首发 MasterGo 设计智能识别引擎,秒级生成 Vue 代码
VTJ.PRO发布「AI MasterGo设计稿识别引擎」,成为全球首个支持解析MasterGo原生JSON文件并自动生成Vue组件的AI工具。通过双引擎架构,实现设计到代码全流程自动化,效率提升300%,助力企业降本增效,引领“设计即生产”新时代。
299 1
|
6月前
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
862 4
|
4月前
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
5月前
|
JavaScript 数据可视化 前端开发
基于 Vue 与 D3 的可拖拽拓扑图技术方案及应用案例解析
本文介绍了基于Vue和D3实现可拖拽拓扑图的技术方案与应用实例。通过Vue构建用户界面和交互逻辑,结合D3强大的数据可视化能力,实现了力导向布局、节点拖拽、交互事件等功能。文章详细讲解了数据模型设计、拖拽功能实现、组件封装及高级扩展(如节点类型定制、连接样式优化等),并提供了性能优化方案以应对大数据量场景。最终,展示了基础网络拓扑、实时更新拓扑等应用实例,为开发者提供了一套完整的实现思路和实践经验。
626 77
|
6月前
|
缓存 JavaScript 前端开发
Vue 基础语法介绍
Vue 基础语法介绍
|
4月前
|
JavaScript 前端开发 开发者
Vue 自定义进度条组件封装及使用方法详解
这是一篇关于自定义进度条组件的使用指南和开发文档。文章详细介绍了如何在Vue项目中引入、注册并使用该组件,包括基础与高级示例。组件支持分段配置(如颜色、文本)、动画效果及超出进度提示等功能。同时提供了完整的代码实现,支持全局注册,并提出了优化建议,如主题支持、响应式设计等,帮助开发者更灵活地集成和定制进度条组件。资源链接已提供,适合前端开发者参考学习。
404 17

热门文章

最新文章