Skip to content

插槽

  • summary:

    子组件:<component :is="xxx"/>
    父组件:<slot/>  // <slot></slot>
  • 留空白写成自闭合标签:

    <slot/>
  • 插槽内设置的标签,作用域在本页面内部

  • 父组件=>子组件

    • 使用props,单项绑定数据传递
  • 子组件=>父组件

  • 默认值

    • text节点
    vue
    <slot>默认值</slot>
  • name属性

    • 不传递name时,默认会插入默认插槽里 即 <slot name="default"/ >里
  • 实操:

      父组件:<templatev v-slot:xxx/>
      子组件:<slot name="xxx"></slot>
  • 简写: #

  • 删除实现

    //1父级删除
    //父级设置删除事件,通过emit传递到子组件中,子组件设置emit接收
    del(lesson){
    	const index = this.lessons.findIndex(l=>l.id == lessons.id)
    	this.lessons.splice(idnex,1)
    }
    
    //2插槽删除
    //通过插槽进行父子组件数据传递
    
    <lesson v-for="lesson in lessons" key="lesson.id" :lesson_item="lesson">
    	<template #default="id">
    		<button @click="del(id)">删除</button>
    	</template>
    </lesson>
    
    <div>
    	<slot :id="lesson_item.id"> <slot/>
    </div>
    • 分开接收/全部接收
  • 独占默认插槽

    • 父级标签上添加属性 #default="{xxx}" 子组件只有一个slot时才适用