(十四)插槽slot

本节知识点

  • 插槽slot
  • 作用域插槽 比如li options 等等

(一)插槽使用场景

  • 父组件给子元素发送数据除了props 还能用插槽
  • 子组件想渲染出来父元素给子元素的html代码,必须就需要插糟了

(二) 使用方法

  • (1)没有传值,没有默认值
<body>
  <div id="app">
    <zujian1>
      <p>插入的内容</p>
    </zujian1>
  </div>
</body>
<script>
  let zujian1 = {
    template: '<div><p>没插入内容</p><slot></slot></div>',

  }
  let app = new Vue({
    el: "#app",
    data: {
      message: "Hello World!"
    },
    components: {
      zujian1
    }
  })
</script>

这样页面渲染的结果就是


6.jpg
  • (2)有默认值

<body>
  <div id="app">
    <zujian1>

    </zujian1>
  </div>
</body>
<script>
  let zujian1 = {
    template: '<div><p>没插入内容</p><slot>这个就是默认内容</slot></div>',

  }
  let app = new Vue({
    el: "#app",
    data: {
      message: "Hello World!"
    },
    components: {
      zujian1
    }
  })
</script>

渲染后的结果就是

7.jpg
  • (3) 多个插槽

<body>
  <div id="app">
    <zujian1>
      <header class="header" slot="header">这个就是头部</header>
      <footer class="footer" slot="footer">这个就是脚步</footer>
    </zujian1>
  </div>
</body>
<script>
  let zujian1 = {
    template: `<div>
    <slot name="header"></slot>
    <p class="content">content</p>
    <slot name="footer"></slot>
    </div>`,

  }
  let app = new Vue({
    el: "#app",
    data: {
      message: "Hello World!"
    },
    components: {
      zujian1
    }
  })
</script>
8.jpg

作用域插糟

作用域插糟必须以template作为包裹层


<body>
  <div id="app">
    <zujian1>
      <template slot-scope="props">
                <li>{{props.item}}</li>
            </template>
    </zujian1>
  </div>
</body>
<script>
  let zujian1 = {
    data() {
      return {
        list: [1, 2, 3, 4]
      }
    },
    template: `<div>
      <ul>
        <slot v-for="(item,index) in list" :item="item">{{item}}</slot>
      </ul>
    </div>`,

  }
  let app = new Vue({
    el: "#app",
    data: {
      message: "Hello World!"
    },
    components: {
      zujian1
    }
  })
</script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装...
    youins阅读 13,153评论 0 13
  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 12,006评论 0 25
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 10,452评论 0 29
  • 此文基于官方文档,里面部分例子有改动,加上了一些自己的理解 什么是组件? 组件(Component)是 Vue.j...
    陆志均阅读 9,234评论 5 14
  • 果戈里说:我宁可因饥饿而死,不愿发表那些没有分别的,不加思考的作品,不要责备我。为什么优秀作品和普通作品,有如此大...
    橙橙读书阅读 2,490评论 0 1