Vue内置组件之slot

本文介绍了如何使用Vue内置组件的slot特性来传递内容。通过在父组件中设置slot属性传递键名,然后在子组件模板中使用slot双标签并用name属性接收,实现了将内容插入到特定位置的功能。示例代码展示了具体操作步骤,并提到了Vue 2.6中插槽的变化,建议参考官方文档以获取最新信息。

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

先准备一个组件:
在这里插入图片描述
现在有一个需求是:在三个p标签里加上各自的内容,怎么实现呢?
总共分为两步:
第一步:在html的组件中用slot属性传递值(slot属性里写键名) .

    <div id="app">
      <jspang>
        <!-- 第一步:传递数值(slot属性里写键名) -->
        <span slot="bolgUrl">{{ jspangData.bolgUrl }}</span>
        <span slot="netName">panda</span>
        <span slot="skill">{{ jspangData.skill }}</span>
      </jspang>
    </div>

第二步:在组件模板中用slot标签接收值(注意slot标签是双标签,里面用name属性来接收).

    <template id="tep">
      <div>
        <!-- 第二步接收slot标签的值(注意slot标签是双标签,里面用name属性来接收) -->
        <p>播客地址:<slot name="bolgUrl"></slot></p>
        <p>网名:<slot name="netName"></slot></p>
        <p>所会技术:<slot name="skill"></slot></p>
        >
      </div>
    </template>

实现效果:
在这里插入图片描述
附完整代码:

<!DOCTYPE html>
<html lang="en">
  <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" />
    <title>lianxi</title>
  </head>
  <body>
    <div id="app">
      <jspang>
        <!-- 第一步:传递数值(slot属性里写键名) -->
        <span slot="bolgUrl">{{ jspangData.bolgUrl }}</span>
        <span slot="netName">panda</span>
        <span slot="skill">{{ jspangData.skill }}</span>
      </jspang>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <template id="tep">
      <div>
        <!-- 第二步接收slot标签的值(注意slot标签是双标签,里面用name属性来接收) -->
        <p>播客地址:<slot name="bolgUrl"></slot></p>
        <p>网名:<slot name="netName"></slot></p>
        <p>所会技术:<slot name="skill"></slot></p>
        
      </div>
    </template>
    <script>
      let jspang = {
        template: '#tep'
      }

      let app = new Vue({
        el: '#app',
        data: {
          jspangData: {
            bolgUrl: 'http://jspang.com',
            netName: 'jspang',
            skill: 'web前端'
          }
        },
        components: {
          "jspang": jspang
        }
      })
    </script>
  </body>
</html>

官方案例:
在这里插入图片描述
需要注意的是插槽在vue2.6有变更,传送门:https://cn.vuejs.org/v2/guide/components-slots.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值