Vue3 第十四篇:JSX传入elementplus组件插槽

42 篇文章 13 订阅

在使用jsx写无限递归菜单的时候,发现el-sub-menu组件的标题,是通过传入具名插槽实现的,找了很久,在快放弃这种写法的时候,发现了这个博客,从中得到了启发:十分感谢此博主!vue3+jsx使用递归组件实现无限级菜单 - 简书评论放链接好像会被吞,demo地址:https://gitee.com/zqw127/vue3-jsx-project[https://gitee.com/zqw127/vu...https://www.jianshu.com/p/73264214a97e

实现方法如下:

1.我们先看一下elementplus官网对于el-sub-menu的用法:具名插槽的名称是title,我们在使用el-sub-menu组件的时候需要传入title插槽,jsx是没有template标签的,也没有#title的写法。且往下看:

 2.传入方式如下:

<el-sub-menu index={menu.id} v-slots={slots}>

3.传入的slots的写法有讲究:

const slots = {
    // 具名插槽:title
    title: () => {
        return (
            <>
                <span>用户管理</span>
            </>
        )
    }
}

4.完整代码如下:

const SubMenu = (props) => {
    const { menu } = props
    // 定义具名插槽:title
    const slots = {
        title: () => {
            return (
                <>
                    <span>用户管理</span>
                </>
            )
        }
    }
    return (
        <>
            <el-sub-menu index={menu.id} v-slots={slots}>{/* 传入插槽 */}
                {
                    menu.children.map(x => {
                        if (x.children) {
                            // 递归
                            return (
                                <>
                                    <SubMenu menu={x}></SubMenu>
                                </>
                            )
                        } else {
                            //实际节点,则渲染
                            return (
                                <>
                                    <MenuItem index={x.id} name={x.name}></MenuItem>
                                </>
                            )
                        }
                    })
                }
            </el-sub-menu>
        </>
    )
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文子阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值