Vue3:透传 Attributes
在Vue 3中,如果你想要创建一个组件,它可以透传(transparently pass through)所有的非 prop 属性到它的子组件,你可以使用 v-bind="$attrs"
。
这里是一个简单的例子:
<template>
<div>
<inner-component v-bind="$attrs" />
</div>
</template>
<script>
import { defineComponent } from 'vue';
import InnerComponent from './InnerComponent.vue';
export default defineComponent({
components: {
InnerComponent
}
});
</script>
在InnerComponent.vue中:
<template>
<div>
<!-- 这里的属性包括了来自父组件的所有非 prop 属性 -->
<button :class="$attrs.class">Click me</button>
</div>
</template>
<script>
import { defineComponent } from 'vue';
export default defineComponent({
// 这里可以定义 props
});
</script>
在这个例子中,如果你在使用OuterComponent的时候传递了一个属性给它,比如<outer-component class="btn-primary" />
,那么这个class="btn-primary"
将会被透传到InnerComponent,并且可以在InnerComponent的模板中通过$attrs.class
访问到。
评论已关闭