如何使用Vue中的slot

之前看官方文档,由于自己理解的偏差,不知道slot是干嘛的,看到小标题,使用Slot分发内容,就以为 是要往下派发内容。然后就没有理解插槽的概念。其实说白了,使用slot就是先圈一块地,将来可能种花种菜,也有可能在这块地上建房子。然而slot可以以一当十,可以插入很多东西。不知明白否?

由于项目经验有限,这篇我就先跟着官网的知识点走,当然会加入自己的部分项目代码。

关于slot是这样说的,

除非子组件模板包含至少一个 <slot> 插口,否则父组件的内容将会被丢弃。当子组件模板只有一个没有属性的 slot 时,父组件整个内容片段将插入到 slot 所在的 DOM 位置,并替换掉 slot 标签本身。

最初在 <slot> 标签中的任何内容都被视为备用内容。备用内容在子组件的作用域内编译,并且只有在宿主元素为空,且没有要插入的内容时才显示备用内容。

假定 my-component 组件有下面模板:

     
     
<div>
<h2>我是子组件的标题 </h2>
<slot>
只有在没有要分发的内容时才会显示。
</slot>
</div>

父组件模版:

     
     
<div>
<h1>我是父组件的标题 </h1>
<my-component>
<p>这是一些初始内容 </p>
<p>这是更多的初始内容 </p>
</my-component>
</div>

渲染结果:

     
     
<div>
<h1>我是父组件的标题 </h1>
<div>
<h2>我是子组件的标题 </h2>
<p>这是一些初始内容 </p>
<p>这是更多的初始内容 </p>
</div>
</div>
除了上述问题,还可以,给出名称,具名slot。

难点在于作用域插槽的理解:

上面这样讲到,

作用域插槽是一种特殊类型的插槽,用作使用一个(能够传递数据到)可重用模板替换已渲染元素。

在子组件中,只需将数据传递到插槽,就像你将 prop 传递给组件一样

 
 
<div class="child">
<slot text="hello from child"> </slot>
</div>
 
 
<div class="parent">
<child>
<template scope="props">
<span>hello from parent </span>
<span>{{ props.text }} </span>
</template>
</child>
</div>
 
 
<div class="parent">
<div class="child">
<span>hello from parent </span>
<span>hello from child </span>
</div>
</div>
还有一个就是用于列表组件,允许组件自定义应该如何渲染列表每一项
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值