vue — 插槽

267 阅读1分钟

Vue 2.6.0之后采用全新v-slot语法取代之前的slot、slot-scope

1.匿名插槽

// 组件Comp1
<template>
  <div>
    组件1 <slot></slot>
  </div>
</template>

// 使用
<h2>匿名插槽</h2>
<comp1><p>组件1内容</p></comp1>

2.具名插槽

// 组件Comp2
<template>
  <div>
    <div>组件2</div>
    <slot></slot>
    <p>分割</p>
    <slot name="content"></slot>
  </div>
</template>

// 使用
<h2>具名插槽</h2>
<comp2>
  <--默认插槽使用default作为参数-->
  <template v-slot:default>标题</template>
  <template v-slot:content>内容</template>
</comp2>

3.作用域插槽

// 组件Comp3
<template>
  <div>
    <div>组件3</div>
    <slot :user="user"></slot>
  </div>
</template>

<script>
export default {
  data() {
    return {
      user: {
        firstName: 'xu',
        lastName: 'xiaoyin'
      },
    }
  }
}
</script>

// 使用
<h2>作用域插槽</h2>
<comp3>
  <template v-slot:default="slotProps">
    <div>{{slotProps.user.lastName}}</div>
  </template>
</comp3>