什么是插槽?

138 阅读2分钟
什么是插槽

插槽就是子组件中的提供给父组件使用的一个占位符,用表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的标签。简单理解就是子组件中留下个位置,父组件可以使用指定内容来填补这个位置。

插槽的分类:
  1. 匿名插槽
  • name默认为default
  • 基本使用: 定义组件时,在需要由用户自定义的区域使用<slot></slot>占位,使用组件时,在组件的标签之间通过<template #default></template>定义要往插槽中填充的内容。示例代码: 匿名插槽.jpg

注:如子组件中未使用<slot></slot>标签进行占位、则父组件<template #default></template>标签中定义的填充内容无效。在子组件的<slot></slot>标签内可以定义默认内容、父组件为定义内容时显示。

  1. 具名插槽
  • 具名插槽就是起了名字的插槽,一般用于需要使用多个插槽的时候 具名插槽.jpg
  1. 每个插槽都有一个名字,当一个组件中只有一个插槽时,建议使用匿名插槽。
  2. vue3必须把v-slot写在template标签中,而vue2中的slot可以写在任意标签中。
  3. 在组件定义时为solt制定name属性,使用组件时,通过v-slot:插槽名称,指定插入到哪个插槽。v-slot必须使用在template标签上v-slot:插槽名称可以简写为#插槽名称
  1. 作用域插槽
  • 让父组件的插槽内容可以访问子组件中的props数据 作用域插槽.jpg
  1. vue3在父组件中使用作用域插槽通过v-slot:插槽名="data"#插槽名="data"
  2. vue2使用slot="插槽名"和slot-scope="scope"(两个属性都为必带)
  3. vue2使用时可通过scope.data或slot-scope="{scope}"解构数据
使用插槽的优点
  1. 提高组件的复用性:插槽可以将父组件的内容传递到子组件中,提高组件的复用性,使得组件可以更加通用和灵活。
  2. 提高组件的可读性:插槽可以将父组件的内容传递到子组件中,并在子组件中进行渲染,提高组件的可读性和可维护性。
  3. 提高组件的可扩展性:插槽可以让父组件向子组件传递不同的内容,提高组件的可扩展性,使得组件可以适应不同的场景和需求。