vue插槽(slot)的模板与JSX写法

218 篇文章 18 订阅

vue官网API:

插槽:https://cn.vuejs.org/v2/guide/components-slots.html

JSX:https://cn.vuejs.org/v2/guide/render-function.html

说明:vue版本2.6.0以上语法

一、插槽模板传值

子组件:child.vue

复制代码

<template>
    <div>
        <!-- 默认插槽 -->
        <slot :info="info"></slot>
        <!-- other插槽 -->
        <slot name="other" :info="info2"></slot>
    </div>
</template>

<script>
export default {
    data() {
        return {
            info: {
                title: "标题一"
            },
            info2: {
                title: "标题二"
            }
        };
    }
};
</script>

复制代码

父组件:parent.vue

复制代码

<child>
    <template v-slot:default="slotProps">
        <div>
            {{ slotProps.info.title }}
        </div>
    </template>
    <template v-slot:other="slotProps">
        <div>
            {{ slotProps.info.title }}
        </div>
    </template>
</child>

复制代码

结果:

 

 

 二、插槽传值JSX写法

子组件:child.jsx

复制代码

export default {
    data() {
        return {
            info: {
                title: "标题一"
            },
            info2: {
                title: "标题二"
            }
        };
    },
    render() {
        return (
            <div>
                {this.$scopedSlots.default({
                    info: this.info
                })}

                {this.$scopedSlots.other({
                    info: this.info2
                })}
            </div>
        );
    }
};

复制代码

父组件:parent.jsx

复制代码

<child
    scopedSlots={{
        default: props => {
            return (
                <div style="line-height: 30px;">
                    {props.info.title}
                </div>
            );
        },
        other: props => {
            return (
                <div style="line-height: 30px;">
                    {props.info.title}
                </div>
            );
        }
    }}
/>

复制代码

结果:

 转自https://www.cnblogs.com/ccyinghua/p/12174699.html

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值