vue3中作用域插槽的使用

vue3的作用域插槽,在我们封装高级组件时,依靠其灵活的slot,可以帮助我们拓展组件的多样性。

首先得搞清楚作用域插槽,简而言之就是:父组件只能访问在父组件中编译的内容,子组件只能访问子组件中的内容;

假设我们有一个需求,在App.vue中有一个数组需要通过一个子组件来显示,同时我们还希望显示内容的标签可以自定义,也就是说可以用div、span或者其他任何html标签,如何实现呢?当然是插槽。

看下面的例子:

假设有两个组件,App.vue和SlotComponent.vue
要实现上面的需求,可以像这样写:

App.vue

<template>
<!--
从下面就可以看出作用域插槽的灵活之处,我既可以用button也可以用h1标签
首先需要在template上使用v-slot指令给插槽传递一个slotProps对象,要访问的子组件的值就在这个对象里
(注意该指令只能用在template标签上)
然后就可以像下面这样,通过slotProps对象访问item和index了


注意:!! 具名插槽要这样写v-slot:  v-slot:slotName="peanut"
-->

  <!--使用button-->
  <SlotComponent :langs="langs" v-slot="slotProps">
    <button>{
  {slotProps.item}}  序号 {
  {slotProps.index}}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 作用域插槽是一种特殊的插槽,可以让父组件向子组件传递数据。通过作用域插槽,子组件可以在插槽内部访问到父组件传递的数据,并且可以根据这些数据来渲染内容。 要在 Vue 使用作用域插槽,首先需要在父组件定义一个插槽,并在插槽使用 `<template>` 标签来定义子组件要渲染的内容。在 `<template>` 标签,你可以使用 `slot-scope` 属性指定一个变量名,用于访问父组件传递的数据。 下面是一个示例代码,展示了如何在 Vue 使用作用域插槽: ```html <!-- 父组件 --> <template> <div> <child-component> <!-- 定义一个作用域插槽 --> <template v-slot:default="slotProps"> <p>{{ slotProps.message }}</p> </template> </child-component> </div> </template> <!-- 子组件 --> <template> <div> <slot></slot> </div> </template> <script> export default { name: 'ChildComponent', } </script> ``` 在上面的代码,父组件使用了 `v-slot:default="slotProps"` 来定义了一个名为 `default` 的作用域插槽,并将父组件传递的数据绑定到 `slotProps` 变量上。在子组件使用 `<slot></slot>` 来渲染插槽内部的内容。 这样,父组件的内容会被传递到子组件的插槽,并且可以在插槽内部使用 `slotProps` 变量来访问父组件传递的数据。在上面的示例插槽内部渲染了一个 `<p>` 标签,并通过 `slotProps.message` 来显示父组件传递的消息。 希望能帮到你!如果还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值