vue3 slot插槽在tsx中的使用方法

这里只记录在tsx中插槽如何使用,至于在template中的使用插槽可查阅 官方文档–插槽 Slots

TSX中使用插槽

  • 默认插槽

    这里setup接收两个参数

    props 组件外部传递过来,且组件内部声明接收了的属性
    context 上下文对象 (一般使用解构{attrs, slots, emit, expose})

    这里是一个子组件 A.tsx

export default defineComponent({
    setup(props, { emit, slots, expose }) {
        return () => <div>{slots.default?.()}</div>
    }
})

  • 具名插槽

这里是一个子组件 B.tsx

export default defineComponent({
    setup(_, { slots }) {
        return () => <>{slots.foo?.()}</>
    }
})

这个foo就是定义的插槽名字

  • 作用域插槽

    这里是一个子组件 C.tsx

export default defineComponent({
    setup(_, { slots }) {
        return () => <>{slots.footer?.({ name: 'C插槽传递的数据', data: [1, 2, 3, 4, 5, 6] })}</>
    }
})

{ name: 'C插槽的数据', data: [1, 2, 3, 4, 5, 6] } 这个对象就是向外部传递的数据

在父组件中使用

import A from './A'
import B from './B'
import C from './C'
export default defineComponent({
    setup() {
        return () => (
            <div>
          			<A>我是默认插槽的内容</A>
                <A>{{ default: () => <p>我是默认插槽的内容</p> }}</A>
                <B>{{ foo: () => <p>我是具名插槽的内容</p> }}</B>
                <C>
                    {{
                      	// 通过解构得到插槽作用域的参数。{ name: string; data: number[] }是定义的ts类型
                        footer: ({ name, data }: { name: string; data: number[] }) => (
                            <p>
                                {name}---{data}
                            </p>
                        )
                    }}
                </C>
            </div>
        )
    }
})
  • 显示效果

在这里插入图片描述

以上是简单列举的几种常用的使用场景

其他

更多的tsx用法可参考官方文档–渲染函数案例

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3,可以通过插槽(slot)来实现组件之间的数据传递。插槽可以在父组件定义内容,并在子组件使用。当父组件向子组件传递插槽时,可以使用插槽的特性进行数据传递。 引用[1]和的代码示例展示了在Vue3使用插槽进行数据传递的方法。在父组件,可以使用`<template>`标签定义插槽,然后在子组件使用相应的标签引用插槽的内容。通过为插槽添加属性,可以将父组件的数据传递给子组件。 例如,在父组件定义了一个名为`error`的插槽,在子组件可以使用`template`标签的`#error`属性来引用该插槽。在插槽可以自定义插槽的内容,并通过`slotProps`参数接收父组件传递过来的数据。 总结来说,Vue3插槽(slot)可以实现父组件向子组件进行数据传递的功能。通过在父组件定义插槽,并在子组件使用相应的标签引用插槽,可以将父组件的数据传递给子组件进行处理和展示。 的`el-image`组件是一个被二次封装的组件,可以根据需要更换为不同的组件库的组件。通过循环注册父组件传递下来的插槽,可以避免手动操作时间和空间上的浪费。 的示例是一个自定义的组件`myComponents`,通过在模板使用`template`标签和`#error`属性,可以在子组件接收父组件传递的`error`插槽并进行处理。 总而言之,通过插槽使用,可以在Vue3实现父组件向子组件进行数据传递的功能,提高组件的灵活性和复用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值