当前位置: 首页 > 知识库问答 >
问题:

vue.js - Vue父组件传递的class为何只在子组件根节点生效?

南门宇
2025-01-14

vue子组件接收了父组件传的class,但为什么只有子组件的根节点能找到对应的样式呢?代码如下

// 父组件
<template>
 <y-button class="red-class">确认</y-button>
</template>
<style>
 .red-class { background-color: red }
</style>
// 子组件
<template>
 <div>
 <button></button>
 </div>
</template>

现在这样的效果是父组件传递的class直接绑定在了子组件最外层的div节点上,且样式生效,期望效果是将class绑定在子组件的button节点上并且生效样式,尝试过以下方式。
1.使用$attrs将class绑定在button上,button上有class类名了,但是没有样式(不是被覆盖,而是根本就没有),设置inhertAttrbute后也不生效。
2.如果删除外层div,将button作为最外层,那么类名和样式才会生效。
3.父组件传递的class对应的样式加deep也可以生效
4.发现button上没有data属性

如何在保留外层div的情况下让button继承父组件传递的class并能加载对应的样式,且样式不需要deep进行包裹?

共有1个答案

侯博易
2025-01-14

官网有写注意提示:

注意 inheritAttrs: false 选项不会影响 style 和 class 的绑定。
  1. 当你想向子组件传递 class,可以改写其他属性来代替,然后在子组件上,手动在 button 上绑定该属性
  2. 使用 provide/inject 传递,也是可以的
 类似资料:
  • 父组件动态传递ref给子组件应该怎么写? 父组件调用 子组件 这里我想把父组件传递的ccc动态给子组件,然后操作子组件?

  • vue3中子组件向父组件传值 在传值的时候为什么只能在声明一个方法的时候传递,而不能在定义click的时候传递呢

  • 本文向大家介绍vue 子组件向父组件传值方法,包括了vue 子组件向父组件传值方法的使用技巧和注意事项,需要的朋友参考一下 子组件注册触发事件,父组件注册 触发子组件事件后的方法写在method里面 父组件这么写 子组件component-a这么写 以上这篇vue 子组件向父组件传值方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 我正在学习通过教程在父组件和子组件之间传递数据。我仔细检查了我的代码,仍然没有找出错误。 我的index.js Home.js 按钮更改链接onClick事件正在调用changeLink函数,该函数将新链接传递给props。 错误:-

  • 本文向大家介绍浅谈Vue父子组件和非父子组件传值问题,包括了浅谈Vue父子组件和非父子组件传值问题的使用技巧和注意事项,需要的朋友参考一下 本文介绍了浅谈Vue父子组件和非父子组件传值问题,分享给大家,具体如下: 1.如何创建组件 1.新建一个组件,如:在goods文件夹下新建goodsList.vue 2.在main.js中引入 import goodsList from 'goods/good

  • 子组件事件能否到传递父组件

  • 本文向大家介绍vue子组件使用自定义事件向父组件传递数据,包括了vue子组件使用自定义事件向父组件传递数据的使用技巧和注意事项,需要的朋友参考一下 使用v-on绑定自定义事件可以让子组件向父组件传递数据,用到了this.$emit(‘自定义的事件名称',传递给父组件的数据) @increment是子组件this.$emit('increment'自定义的事件,newValue)用来告诉父组件自己干

  • 本文向大家介绍图文介绍Vue父组件向子组件传值,包括了图文介绍Vue父组件向子组件传值的使用技巧和注意事项,需要的朋友参考一下 1:在src/components/child/文件夹下,创建一个名为:child.vue的子组件 2:在父组件中,设置好需要传递的数据 3:在App.vue中引入并注册子组件 4:通过v-bind属性绑定并赋值给子组件 5:子组件通过 props 接收父组件传递过的数据