zoukankan      html  css  js  c++  java
  • 在vue中使用插槽 slot

    插槽(slot)这个概念非常重要
    插槽的使用场景1:在子组件里面显示父组件的dom
    <div id='root'>
      <child content = '<p>Dell</p>'></child>
    </div>
    
    <script>
    Vue.component('child',{
      props:['content'],
      template:`
        <div>
          <p>hello</p>
          <div v-html='this.content'></div>
        </div>
      `
    })
    var vm = new Vue({
      el:'#root'
    })
    </script>
    发现这样,能显示出来,但外层必须要包裹一层div,无法直接显示p,而且当内容比较多的时候,会比较难看,
    这个时候就用到vue里面新到语法,slot
    <div id='root'>
      <child>
        <h1>dell</h1>
      </child>
    </div>
    
    <script>
    Vue.component('child',{
      template:`
        <div>
          <p>hello</p>
          <slot></slot>
        </div>
      `
    })
    var vm = new Vue({
      el:'#root'
    })
    </script>

    像这样,父组件里面直接写dom元素,通过slot引用,在子组件插入点内容,叫做插槽



    slot特性
    1、默认内容
    Vue.component('child',{
      template:`
        <div>
          <p>hello</p>
          <slot>默认内容</slot>
        </div>
      `
    })
    如果父没传dom过来,slot会显示默认内容
    2、当有多个slot的时候
    <div id='root'>
      <body-content>
        <div class="header">header</div>
        <div class="footer">footer</div>
      </body-content>
    </div>
    
    
    <script>
    Vue.component('body-content',{
      template:`
        <div>
          <slot></slot>
          <div>content</div>
          <slot></slot>
        </div>
      `
    })
    var vm = new Vue({
      el:'#root'
    })
    </script>
    像这样,肯定不对,页面会出现两个header,footer ,那怎么做,给slot取个名字,具名插槽
    <div id='root'>
      <body-content>
        <div class="header" slot='header'>header</div>
        <div class="footer" slot='footer'>footer</div>
      </body-content>
    </div>
    
    
    <script>
    Vue.component('body-content',{
      template:`
        <div>
          <slot name='header'></slot>
          <div>content</div>
          <slot name='footer'></slot>
        </div>
      `
    })
    var vm = new Vue({
      el:'#root'
    })
    </script>
    这样就可以,父组件中定义两个插槽,子组件进行相应的引用
  • 相关阅读:
    附上我的Github源码
    Java Automic包下的AtomicInteger
    思维题:四个小伙伴过桥问题
    TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗
    输入www.baidu.com会发生什么
    外网IP和内网IP区别
    Queue接口分析:add和offer区别,remove和poll方法到底啥区别
    手工创建一个线程池
    volatile关键字
    牛客网 买手串
  • 原文地址:https://www.cnblogs.com/wzndkj/p/9666864.html
Copyright © 2011-2022 走看看