vue slot 插槽的使用 具名插槽 进行内容分发

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
    </style>
</head>

<body>
    <div id="app">
        <div>
            <!-- 组件 -->
            <first-com>

                <!-- 理解为组件的结构 -->
                <!-- 将header传递分发到 name为header的slot标签中 -->
                <!-- 2.6写法 header为name 为插槽的name-->
                <!-- <template v-slot:header1="obj"> -->
                    <!-- 需要传参的时候的写法 -->
                <template v-slot:header1="{qweqwe}"><!-- 这里也能使用解构赋值 -->
                    <fieldset>
                        <legend>插槽传入的内容1</legend>
                        <!-- {{obj.qweqwe}} -->
                        {{qweqwe}}
                    </fieldset>
                </template>
                
                 <!-- 将main传递分发到 name为main的slot标签中 -->
                 <!-- 2.5写法 -->
                 <!-- 不传参的写法 -->
                <fieldset slot="main">
                    <legend>插槽传入的内容2</legend>
                </fieldset>
                <fieldset>
                    <legend>剩下的内容</legend>
                </fieldset>
                <h2>哈哈哈</h2>
            </first-com>
        </div>
    </div>
    <template id='tem'>
        <fieldset>
            <legend>{{word}}
            </legend>
            <!-- 插槽 用于分发内容 可以用户自定义的内容 对于封装组件很重要
            在很多ui组件中 大量使用 element-ui -->
            <div class="header">
                <!-- 理解为组件名 -->
                <!-- name 为插槽的名称  qweqwe 为传递给结构的值-->
                <slot name='header1' :qweqwe="arr2"></slot><!-- 具名插槽 -->
            </div>
            <div class="main">
                <!-- 理解为组件名 -->
                <slot name="main" :main="arr1"></slot><!-- 具名插槽 -->  
            </div>
            <slot></slot><!-- 默认插槽 -->
        </fieldset>
    </template>
    <script src="../../vue.js"></script>
    <script>
        /* 
        slot 插槽 用于内容分发
        将slot元素作为内容分发的出口
        分装组件的时候 特别需要的 一种预留的接口
        */
        Vue.component('first-com', {
            data() {
                return {
                    word: '插槽',
                    arr1:['真真','爱爱','怜怜'],
                    arr2:['悟空','八戒','达摩'],
                }
            },
            template: "#tem",
        })
        // root组件
        const vm = new Vue({
            el: '#app',
            data: {
                name: 'root组件',
                word: '岁月的童话',
                mov1: "狼的孩子雨和雪"
            },

        });
      /*
        slot 插槽
        */
    </script>
</body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值