JavaScript--在Vue中使用插槽:slot

 更新时间:2021年08月25日 16:37:28   作者:stack君  
这篇文章主要给大家介绍了关于vue中slot(插槽)的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用vue具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在Vue中使用插槽:slot

1、在子组件的template里可以直接使用slot标签<slot></slot>,它可以显示父组件向子组件插入的内容。

2、slot标签里面可以写一些默认值,当父组件没有插入内容的时候它就会显示默认值,插入内容时就只显示插入的内容。

3、当使用多个slot标签时,直接插入多个内容时,每个slot标签内都会包括所有插入的内容。

可以通过slot属性给插入的不同内容设置指定的名字,然后给相应的slot标签设置相应的name属性值,就可以让该slot标签显示指定的插入内容。

1、插槽是统称,模板中的三个slot标签都是插槽。

2、但是多个插槽需要区分,会分别设置一个name属性。这个就叫做“具名插槽”,需要使用name属性命名。

3、上面的是插入插槽的内容,将某个名字的内容插到子组件对应名字里面去。这里就是插入到name="footer"这个插槽中。

4、一般只有一个插槽的时候,不需要具名哦,多个才需要name来区分。

<div id="app">
      <child>
       <!--  <div slot="header">header</div> -->
        <div slot="footer">footer</div>
      </child>
    </div>
    <script>
   Vue.component('child',{
    //通过插槽slot可以更方便地向子组件传递元素,同时子组件使用插槽的内容也非常简单
    template:`<div>
                <slot name='header'>
                  <h6>header插槽内容为空的默认值</h6>
                </slot>
                <div class="content">body</div>
                <slot name='footer'></slot>
              </div>`
   })
    var vm = new Vue({
        el: "#app",
    })
    </script>

作用域插槽:使用template标签包裹

1、<slot v-for='item of list' :item=item></slot>,只确定要对列表做一个循环,但是列表的每一项怎么显示由外部决定。

2、所以需要给子组件传递一个slot,首先一定要在最外层套一个template【固定写法】(这就是作用域插槽),同时要写一个slot-scope属性(属性值是自定义的)。(如:<template slot-scope='props'></template>,含义为子组件在使用slot的时候,会往slot里面传递一个item数据,在上面使用子组件的时候就可以用这个数据,这个数据就放在slot-scope属性值中)

3、应该使用作用域插槽的情况:当子组件要做循环或者它的某一部分应该由外部传递进来的时候。

使用作用域插槽时,子组件可以向父组件的插槽里面传数据,父组件传递过来的插槽如果想接收这个数据,必须在外层使用一个template,同时通过slot-scope对应的属性名来接收传递过来的数据。

<div id="app">
        <child>
          <!--
            父组件调用子组件时,给子组件插入一个作用域插槽template,
            插槽里声明一个从子组件接收的数据item放在slot-scope的属性(props)里,然后通过H1模版方式展现
            -->
           <template slot-scope="props">
             <li>{{props.item}} -hello</li>
           </template>
        </child>
    </div>
    <script>
    Vue.component('child', {
        data:function(){
          return{
            list:[1,2,3,4]
          }
        },
        //当子组件用slot时,往slot里传递一个item的数据,在父组件时就能用这个数据
        template:`<div>
                    <ul>
                      <slot v-for="item of list" :item=item>
                      </slot>
                    </ul>
                  </div>`
                 
    })
    var vm = new Vue({
        el: "#app"
    })
 </script>

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • JavaScript中Array.from()的用法总结

    JavaScript中Array.from()的用法总结

    本文主要介绍了JavaScript中Array.from()的用法总结
    2023-05-05
  • JavaScript中的alert()函数使用技巧详解

    JavaScript中的alert()函数使用技巧详解

    这篇文章主要介绍了JavaScript中的alert()函数使用技巧详解,本文讲解了普通弹出、带换行的文本、使用制表符、使用变量、使用样式等选择,需要的朋友可以参考下
    2014-12-12
  • 浅析我对JS延迟异步脚本的思考

    浅析我对JS延迟异步脚本的思考

    这篇文章主要介绍了浅析我对JS延迟异步脚本的思考,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • JavaScript 组件之旅(一)分析和设计

    JavaScript 组件之旅(一)分析和设计

    毫无疑问,JavaScript 是一种非常灵活的脚本语言,有时候它像一只难以驯服的野马——你受益于它的灵活性的同时,也要时刻提防它变得失去控制
    2009-10-10
  • JavaScript从0开始构思表情插件

    JavaScript从0开始构思表情插件

    在项目开发阶段很多项目都会用到表情插件,接下来通过本文给大家介绍了JavaScript从0开始构思表情插件 的相关资料,需要的朋友可以参考下
    2016-07-07
  • js对象数组和对象的使用实例详解

    js对象数组和对象的使用实例详解

    在本篇文章里小编给大家整理了关于js对象数组和对象的使用实例相关知识点,有需要的朋友们学习下。
    2019-08-08
  • 多浏览器兼容的动态加载 JavaScript 与 CSS

    多浏览器兼容的动态加载 JavaScript 与 CSS

    Omar AL Zabir这位MVP总是喜欢搞些稀奇古怪同时又很实用的小东西,并且还十分值得参考。最近他就做了一个叫做ensure的小工具用于动态加载JavaScript、CSS与HTML,而且IE、Firefox、Opera、Safari都支持了,那么我们就来看看ensure是如何做到动态加载JavaScript与CSS的。
    2008-09-09
  • uniapp单页面实现页面切换的使用示例

    uniapp单页面实现页面切换的使用示例

    本文主要介绍了uniapp单页面实现页面切换的使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • 详解JavaScript常量定义

    详解JavaScript常量定义

    本文主要对JavaScript常量定义进行详细介绍,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • BootstrapValidator超详细教程(推荐)

    BootstrapValidator超详细教程(推荐)

    这篇文章主要介绍了BootstrapValidator超详细教程(推荐)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12

最新评论