vue中的插槽

插槽语法统筹

匿名插槽

<slot> 这就是默认值 </slot>
<ebutton> {{ child }}</ebutton>

具名插槽,#可替换为v-slot

<slot name= 'one'> 这就是默认值1</slot>
<ebutton>
    <template #:one> 这是插入到one插槽的内容 </template>
</ebutton>

作用域插槽

通过slot 我们可以在父组件为子组件添加内容,通过给slot命名的方式,我们可以添加不止一个位置的内容。但是我们添加的数据都是父组件内的。上面我们说过不能直接使用子组件内的数据,但是我们是否有其他的方法,让我们能够使用子组件的数据呢? 其实我们也可以使用v-slot的方式:

//子组件 : (假设名为:ebutton)
<template>
  <div class= 'button'>
      <button>  </button>
      <slot name= 'one' :value1='child1'> 这就是默认值1</slot>    //绑定child1的数据
      <slot :value2='child2'> 这就是默认值2 </slot>  //绑定child2的数据,这里我没有命名slot
  </div>           
</template>

new Vue({
  el:'.button',
  data:{
    child1:'数据1',
    child2:'数据2'
  }
})

//父组件:(引用子组件 ebutton)
<template>
  <div class= 'app'>
     <ebutton> 

        // 通过v-slot的语法 将插槽 one 的值赋值给slotonevalue 
        <template #:one = 'slotonevalue'>  
           {{ slotonevalue.value1 }}
        </template>

        // 同上,由于子组件没有给slot命名,默认值就为default
        <template #:default = 'slottwovalue'> 
           {{ slottwovalue.value2 }}
        </template>

     </ebutton>
  </div>
</template>

.作用域插槽总结来说就是:

  • 首先在子组件的slot上动态绑定一个值( :key='value')
  • 然后在父组件通过#:name = ‘valueshaha ’的方式将这个值赋值给 valueshaha
  • 最后通过{{ valueshaha.key }}的方式获取数据

插槽总结:

  • 父组件中的<ebutton></ebutton> 中添加内容,是不会在页面上渲染的,所以有了插槽。
  • 插槽本是父级调用子组件给子组件传html,作用域插槽是子传值给父级,父级绑定值再将html传给子

摘取自:https://zhuanlan.zhihu.com/p/114502325

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容