vue的 slot 插槽的使用



一般用法

直接往里写就行,记住,组件中间,应该写的是 html 标签。

    <div id="app">
        <cpn :cmovies="movies" :cmessage="message"><p>哈哈,我是插进来的</p></cpn>
    </div>

    <template id="cpn">
        <div>
            <p>{{cmovies}}</p>
            <p>{{cmessage}}</p>
            <slot></slot>
        </div>
    </template>


设置默认值

设置好默认组件,如果插值没有传值,那么就可以使用默认值。

   <div id="app">
        <cpn :cmovies="movies" :cmessage="message"></cpn>
    </div>

    <template id="cpn">
        <div>
            <p>{{cmovies}}</p>
            <p>{{cmessage}}</p>
            <slot><p>哈哈</p></slot>
        </div>
    </template>


具名插槽

指名替换的是那一部分插槽?

<div id="app">
        <cpn><span slot="a">你好</span></cpn>
    </div>

    <template id="cpn">
        <div>
            <slot name="a"><span>哈哈</span></slot>
            <br>
            <slot name="b"><span>呵呵</span></slot>
        </div>
    </template>


完整代码

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
    <title>Document</title>
</head>

<body>
    <div id="app">
        <cpn><span slot="a">你好</span></cpn>
    </div>

    <template id="cpn">
        <div>
            <slot name="a"><span>哈哈</span></slot>
            <br>
            <slot name="b"><span>呵呵</span></slot>
        </div>
    </template>


    <script>
        const cpn = {
            template: '#cpn',
            data() {
                return {}
            },
            props: ["cmovies", 'cmessage'], // 可以是数组,也可以是对象,
        }

        const app = new Vue({
            el: '#app',
            data: {
                message: "你好",
                movies: ['海王', '海贼王', '海尔兄弟'],
            },
            components: {
                cpn
            }
        })
    </script>
</body>

</html>
posted @ 2021-05-12 19:23  沧海一声笑rush  阅读(38)  评论(0编辑  收藏  举报