Vue(10) —— 插槽slot

本文介绍了Vue.js中的插槽机制,它允许开发者在不修改组件视图的情况下,通过插槽插入任意内容,提高组件的灵活性和扩展性。示例展示了如何使用插槽动态替换标题和列表数据,强调了插槽在创建可复用组件时的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.什么是插槽

    在 Vue.js 中咱们使用 slot 元素做为承载分发内容的出口,作者称其为 插槽,能够应用在组合组件的场景中
在这里插入图片描述


2.怎么使用插槽

<div id="vue" >
    <p>学习路线</p>
    <ul>
        <li>java</li>
        <li>spring框架</li>
        <li>linux</li>
    </ul>
</div>

在这里插入图片描述
需求

  • 写一些待办事项表,现在上面页面中的数据都是在前端写死的,是静态的,而真实业务中这些数据都应该是从数据库中查询出来的(每个人的数据应该是不一样的),分析上面的数据,需要动态变化的数据就是title和li中的数据,需求看到这里是不是觉得我们在data中定义两个参数,一个title,一个集合(由li遍历输出)就可以满足需求了?
  • 但是上面这么实现是不是前端的代码就被写死了?就是这里我不想放一个列表了,我想放一张图片,或者放一个链接,那么是不是还要去修改视图中的代码?
  • 这个时候就显示出插槽的作用了,定义一个插槽,随便你往里面插入什么数据
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div id="vue" >
    <todo>
        <todo-items slot="items" v-for="item in todoItems" :item="item"></todo-items>
        <todo-title slot="title" :title="title"></todo-title>

    </todo>
</div>

<!--引入 JS 文件-->
<script src="../../../vue.js"></script>
<script type="text/javascript">
    Vue.component("todo",{
        template:"<div>\
                    <slot name='title'></slot>\
                    <ul>\
                        <slot name='items'></slot>\
                    </ul>\
                  </div>"

    })
    Vue.component("todo-title",{
        props: ["title"],
        template: "<div>{{title}}</div>"
    })
    Vue.component("todo-items",{
        props: ["item"],
        template:"<li>{{item}}</li>"
    })

    var vm = new Vue({
        el: '#vue',
        data:{
            title:"Java学习路线",
            todoItems:["java基础","Java框架","Vue"]
        }
    });
</script>


</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


  • 测试
    在这里插入图片描述

  • 尝试将原来的title部分改成一个超链接
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 如果使用原来直接在上面写上一个{{title}}的方式要实现不修改视图代码而实现相同的功能是不可能的,这就是插槽强大的地方

小结

  • 所谓插槽就是在一个Vue组件中为一个留了一个口子,我们可以在这个口子里面任意的插入我们想要的插入的东西
  • 这样做使得在不修改视图的情况下,原视图具有很好的扩展性
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值