vue slot插槽

<slot> 元素作为承载分发内容的出口 --官方文档的定义

slot 实现的就是内容分发,实际上就是为了让组件可以组合,用一种方式来混合父组件的内容和子组件自有的模板.

实际在项目中应用是:例如有一个弹框是固定的模板,但是这个提示框要根据放到不同的产品页面显示不同产品信息。
slot 到底是什么意思--看图


根据是否设置name这个属性,分为匿名插槽、具名插槽

匿名插槽:

1 <navigation-link> 子组件定义为

<a
  v-bind:href="url"  class="nav-link">
  <slot></slot>
</a>

2 父组件这样去使用<navigation-link>子组件

<navigation-link url="/profile">
Your Profile
</navigation-link>

3 渲染出来的 HTML

<a v-bind:href="url" class="nav-link">
  Your Profile
</a>

具名插槽:

1 <alert> 组件定义为

 <div class="alertBox">
    <p>
      我是标题,你也可以动态传入
    </p>
    <div class="contenSlot">
      <slot name="content">
        <div class="alertContent">
          <p>想要展示的内容 你不写就展示我现在的内容</p>
        </div>
      </slot>
    </div>
    <div class="footerOption">
      <slot name="footerOption">
        <div class="flw">
          <button>取消</button>
        </div>
        <div class="flw">
          <button>确定</button>
        </div>
      </slot>
    </div>
  </div>

2 父组件这样使用alert组件

<div class="fatherBox">
  //组件的其他部分
  <div class="otherWrap">
    <span class="textLabel">其他部分</span>
  </div>
  <p @click="check">
    确 定
  </p>
  //插槽
  <alert>
    <div slot="content">
      <p class="listItem">
        <span class="item">你想在你的页面显示啥就写啥呗</span>
      </p>
      <p class="listItem">
        <span class="item">我就是不想和你原来的一样</span>
      </p>
    </div>
    <div slot="footerOption">
      <button>我知道了</button>
    </div>
  </alert>
</div>

3 渲染出来的 HTML

  <div class="fatherBox">
    //组件的其他部分
    <div class="otherWrap">
      <span class="textLabel">其他部分</span>
    </div>
    <p @click="check">
      确 定
    </p>
    //插槽
    <div class="alertBox">
      <p>
        我是标题,你也可以动态传入
      </p>
      <div class="contenSlot">
        <p class="listItem">
          <span class="item">你想在你的页面显示啥就写啥呗</span>
        </p>
        <p class="listItem">
          <span class="item">我就是不想和你原来的一样</span>
        </p>
      </div>
      <div class="footerOption">
        <button>我知道了</button>
      </div>
    </div>
  </div>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 组件(Component)是Vue.js最核心的功能,也是整个架构设计最精彩的地方,当然也是最难掌握的。...
    六个周阅读 5,652评论 0 32
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,079评论 0 29
  • 什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装...
    youins阅读 9,528评论 0 13
  • 此文基于官方文档,里面部分例子有改动,加上了一些自己的理解 什么是组件? 组件(Component)是 Vue.j...
    陆志均阅读 3,866评论 5 14