欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

零基础学习Vue: 第27课 Vue子组件插槽引入与插入方法与获取方法$slots

程序员文章站 2022-04-24 09:48:41
...

零基础学习Vue: 第27课 Vue子组件插槽引入与插入方法与获取方法$slots

以下是代码演示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 引入vue -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>

<div id="app">
    <!-- 4.引入子组件 -->
    <son>
        <!-- 5.插入插槽 -->
        <!-- 插入name=qqq插槽 -->
        <h1 slot="qqq">测试标题</h1>
        <!-- 测试插入name=www插槽 该插槽没有 -->
        <p slot="www">测试内容</p>

        <!-- 必须要用template标签  必须要用slot-scope属性 -->
        <template slot='admin' slot-scope="result">
            <ul>
                <li v-for="(item,index) in result.admin">
                    {{index}}--{{item}}
                </li>
            </ul>
        </template>
    </son>

</div>

<!-- 3.设置son样式标签 -->
<template id="son">
    <div>
        <slot :admin="arr" name="admin"></slot>
        <!-- name="qqq"的插槽在下面则父组件插入的标签也在下面 -->
        <slot name="qqq"></slot>
        <!-- 定义一个name=xxx的插槽,并不插入数据 -->
        <slot name="xxx"></slot>
        {{a}}
    </div>
</template>

<script>
    //1.定义子组件son
    let son = {
        template:'#son',
        data(){
            return {
                a:'我是子组件的数据',
                arr:['抽烟','喝酒','烫头']
            }
        },
        mounted(){
            console.log(this)
            console.log(this.$slots);   //获取父组件插入的插槽数
        }
    }
    
    //定义vue组件
    let vm = new Vue({ 
        el:'#app',
        data:{
          a:'父组件的数据'
        },
        components:{    //2.注册子主件
            son
        }
    })
</script>
</body>
</html>

运行结果如下:

零基础学习Vue: 第27课 Vue子组件插槽引入与插入方法与获取方法$slots