美文网首页
vue中slot的理解

vue中slot的理解

作者: 心斐 | 来源:发表于2018-05-10 18:18 被阅读0次
嘘,多看图少看文

释义


slot, 解释为插槽,它是组件的一块 HTML模板,而这块模板 显示与否 以及 如何显示,取决于父组件。

props 可以从 父组件 向 子组件 传递 数据;
slot 可以从 父组件 向 子组件 传递 html

显示与否


  • 子组件至少包含一个slot插槽,否则父组件的的内容不会被展示;
    查看源码
  • 如果子组件包含slot插槽
    • 如果父组件不提供内容(即父组件为空),显示slot标签的备用内容。
      查看源码
    • 如果父组件提供内容,则把整个内容片段插入到slot所在的DOM位置,并替换掉slot标签本身。
      查看源码

插槽显示的位置 由子组件自身决定,slot写在组件template的什么位置,父组件传过来的模板将来就显示在什么位置。

那么如何显示呢


插槽可分为单个插槽、具名插槽和作用域插槽。

单个插槽


顾名思义,一个组件中只能有一个单个插槽。
上面的三个源码中的slot,都是 单个插槽。单个插槽没有 name 属性。

具名插槽


  • 具名插槽,比单个插槽,多了个 name 属性。
  • 具名插槽 将匹配内容片段中有对应 name 的元素。
  • 具名插槽可以在一个组件中出现N次,出现在不同的位置。出现的位置以子组件内的顺序为准。

查看源码
从源码中,可以看出,父组件通过html模板上的slot属性关联具名插槽。没有slot属性的html模板默认关联 单个插槽。

作用域插槽


作用域插槽,区别于单个插槽和具名插槽,需要 在slot上绑定数据

<!--父组件-->
<template>
  <div class="father">
    <h3>这里是父组件</h3>
    <child>
      <template slot-scope="user">
        <div class="tmpl">
          <span v-for="item in user.data">{{item}}</span>
        </div>
      </template>
    </child>
</template>
<!-- 子组件 -->
<template>
  <div class="child">
    <h3>这里是子组件</h3>
    // 作用域插槽
    <slot  :data="data"></slot>
  </div>
</template>

 export default {
    data: function(){
      return {
        data: ['小明','小红','小胡','小管']
      }
    }
}

相关文章

  • 深入理解vue中的slot与slot-scope

    深入理解vue中的slot与slot-scope

  • vue插槽

    vue插槽slot的理解与使用 vue slot插槽的使用介绍及总结

  • Vue 作用域插槽

    深入理解vue中的slot与slot-scope 写在前面 vue中关于插槽的文档说明很短,语言又写的很凝练,再加...

  • vue中slot的理解

    释义 slot, 解释为插槽,它是组件的一块 HTML模板,而这块模板 显示与否 以及 如何显示,取决于父组件。 ...

  • Vue学习笔记-插槽

    深入理解vue中的slot与slot-scope 插槽,也就是slot,是组件的一块HTML模板。 对于任何一个组...

  • 详解Vue的slot新用法

    摘要: 理解Vue插槽。 作者:前端小智 原文:vue 2.6 中 slot 的新用法 Fundebug经授权转载...

  • vue template 中 slot-scope/scope

    vue template 中 slot-scope/scope 的使用在vue 2.5.0+ 中slot-scop...

  • vue 插槽的使用

    vue 插槽手册 深入理解vue中的slot与slot-scope 插槽的使用其实是很简单首先要明白插槽是使用在子...

  • Vue中Slot的渲染过程

    Vue在通过compiler解析模版中的slot, slot是组件中的插槽,通过解析slot,把slot的name...

  • vue slot 理解

    slot元素作为组件模板之中的内容分发插槽。有name的是具名slot一、匿名slot子组件 父组件 如果子组件里...

网友评论

      本文标题:vue中slot的理解

      本文链接:https://www.haomeiwen.com/subject/gylzrftx.html