当前位置:首页 > VUE

vue 实现穿透

2026-01-13 08:07:42VUE

在 Vue 中,"穿透"通常指样式穿透(Scoped CSS 的穿透)或事件穿透(Event Bubbling)。以下是两种常见场景的实现方法:

样式穿透(Scoped CSS)

在 Vue 单文件组件中,使用 scoped 属性时,样式默认只作用于当前组件。穿透样式可以使用 ::v-deep/deep/(旧版)。

vue 实现穿透

<style scoped>
/* 新版语法 */
::v-deep .child-class {
  color: red;
}

/* 旧版语法(不推荐) */
/deep/ .child-class {
  font-size: 16px;
}
</style>

事件穿透(Event Bubbling)

Vue 默认支持原生 DOM 事件冒泡,但自定义事件需要手动处理。

vue 实现穿透

<template>
  <div @click="handleParentClick">
    <child-component @custom-event="handleChildEvent" />
  </div>
</template>

<script>
export default {
  methods: {
    handleParentClick() {
      console.log('Parent clicked');
    },
    handleChildEvent() {
      console.log('Child event received');
    }
  }
}
</script>

属性穿透(Attribute Inheritance)

props 定义的属性会自动继承到子组件的根元素上。可通过 inheritAttrs: false 禁用,并用 v-bind="$attrs" 手动控制。

<template>
  <child-component v-bind="$attrs" />
</template>

<script>
export default {
  inheritAttrs: false
}
</script>

组件实例穿透(Ref 链)

通过 ref 获取子组件实例实现穿透操作:

<template>
  <child-component ref="child" />
</template>

<script>
export default {
  mounted() {
    this.$refs.child.someMethod();
  }
}
</script>

注意:过度使用穿透可能破坏组件封装性,建议优先通过 props/emit 规范通信。

标签: vue
分享给朋友:

相关文章

vue实现jqueryui

vue实现jqueryui

Vue 实现 jQuery UI 功能 在 Vue 项目中实现类似 jQuery UI 的功能,可以通过原生 Vue 组件或第三方库来实现。以下是几种常见 jQuery UI 功能的 Vue 替代方案…

vue实现节流

vue实现节流

vue实现节流的方法 在Vue中实现节流(throttle)功能,通常用于限制高频事件的触发频率,例如滚动、输入或按钮点击。以下是几种常见的实现方式: 使用Lodash的throttle函数 安装L…

vue插件实现

vue插件实现

Vue 插件实现方法 Vue 插件是一种向 Vue 应用程序添加全局功能的机制。插件可以包含全局指令、过滤器、混入、实例方法等。 插件的基本结构 一个 Vue 插件通常是一个对象或函数,需要暴露一个…

vue实现计算

vue实现计算

Vue 实现计算的方法 在 Vue 中实现计算功能可以通过多种方式完成,主要包括计算属性(computed)、方法(methods)和侦听器(watch)。以下是具体的实现方法: 计算属性(Comp…

vue网页实现

vue网页实现

Vue 网页实现指南 环境准备 安装 Node.js 和 npm/yarn,确保环境配置正确。使用 Vue CLI 或 Vite 创建项目框架,快速搭建开发环境。 npm install -g @v…

vue实现Pop

vue实现Pop

Vue 实现 Popover 组件的方法 使用 Vue 内置指令 v-show/v-if 和事件监听 通过 Vue 的指令和事件绑定实现基础的 Popover 功能。定义一个布尔值控制 Popover…