Vue3-渗透属性-插槽

本文介绍了Vue3中组件的属性透传和插槽的使用。属性透传指的是未声明为props的属性会被子组件自动继承,可以通过`inheritAttrs: false`取消继承。插槽用于在组件中传递内容,包括基础用法、具名插槽、默认内容和作用域插槽,增强了组件的灵活性和可复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

透传属性:

指的是传递给一个组件,却没有被该组件声明为 props 或 emits 的属性。

合并:如果子组件已经有一个class或者style属性,那么会和父组件透传的属性进行合并。

原生事件继承:如果此时子组件模板也绑定了该事件,则父子会同时被触发。同时,透传也符合深层组件继承的特点。

取消继承:如果你不想要一个组件自动的继承属性,可以在子组件的选项中设置:inheritAttrs: false。

插槽:

      和HTML元素一样向组件中传递内容,Vue提供了插槽来实现这样的需求。

基础用法:

      步骤一:定义子组件模板,在内容部分使用来占位

      步骤二:父组件中向插槽添加内容

      以上组件在渲染的时候,会将子组件Child元素中的“占位符” 替换掉。

插槽内容与出口:

      父组件 Father 中的模板,子组件元素(开闭标签)中的内容为插槽内容,而的模板中的是插槽出口。元素是一个插槽出口 (slot outlet),标示了父元素提供的插槽内容 (slot content) 将在哪里被渲染。

      插槽内容可以是任意合法的模板内容,不局限于文本,甚至是组件。通过使用插槽, 组件更加灵活和具有可复用性。现在组件可以用在不同的地方渲染各种不同的内容,但同时还保证都具有相同的样式。

渲染作用域:

      插槽内容可以访问到父组件的数据作用域但无法访问子组件的数据,因为插槽内容本身是在父组件模板中定义的。

默认内容:

      在外部没有提供任何内容的情况下,可以为插槽指定默认内容。比如我们在父组件没有提供任何插槽内容时在<strong>后渲染“ 系统异常,请稍后再试! ”,只需要把“ 系统异常,请稍后再试! ”写在<slot>标签之间来作为默认内容。

具名插槽:

      步骤一:在父组件Father中使用子组件BaseLayout时.为具名插槽传入内容

      步骤二:在子组件 BaseLayout 中定义具名插槽(header、footer)

动态插槽名:

作用域插槽:

      Vue提供了一个作用域插槽,可以向子组件传递 props 那样,向一个插槽的出口传递属性。子组件决定插槽的内容,父组件决定插槽内容的布局。

      基础用法:

      第一步:传递数据:在子组件(BaseLayout.vue)中的 slot 元素中增加要传递的数据。

页面展示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值