为了账号安全,请及时绑定邮箱和手机立即绑定

vue slot 插槽的使用和理解

标签:
Vue.js

<slot> 元素作为承载分发内容的出口,可以实现组件的复用。

简单的说就是《定制模板》

一个template由多个插槽组成,分发不同的内容,产生各种形态的组件

  • 一个插槽插入到一个对应的标签中
    简单实例:

<div id="app">
    <!--这里放的内容均属于父级当前模板的,绑定事件也需要绑定父级的-->
    <hello>
        lalalala        <!--给插槽起好名字-->
        <div slot="div1" @click="fn()">1111111111111</div>
        <div slot="div2">2222222222222</div>
    </hello></div><template id="temp1"><!--模板中只有一个根元素--><!--slot中可以放置一些默认内容,如果传递了内容则替换掉--><!--如果没有名字的标签默认会放置到   name:default的slot中   -->
    <h1>
        hello        <!--无名插槽-->
        <!--注意:一个组件中不允许有两个匿名插槽-->
        <slot>如果没有lalalala就显示slot中的内容</slot>
        <!--有名插槽 可以根据插槽切换顺序-->
        <div style="color:red" title="123"> <!--防止插槽替换之前的样式属性等信息可以这样处理-->
            <slot name="div2"></slot>
        </div>
        <slot name="div1"></slot>
    </h1></template><script>
    var app=new Vue({
        el:'#app',
        data:{
        },
        components:{
            hello:{
                template:"#temp1"
            }
        },
        methods:{
          fn(){//
            alert(1)
          }
        }
    })</script>

页面渲染成这样的


https://img1.sycdn.imooc.com//5d319137000172cd02940142.jpg

image.png

插槽提供默认的内容

如果组件hello中没有 lalalala  就显示slot中的内容:


https://img1.sycdn.imooc.com//5d31913b0001886906310156.jpg

image.png



作者:Mr无愧于心
链接:https://www.jianshu.com/p/562aa1d72b49


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 1
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消