插槽 Slots

简介: 插槽 Slots

插槽内容与出口

在之前的章节中,我们已经了解到组件能够接收任意类型的 JavaScript 值作为 props,但组件要如何接收模板内容呢?在某些场景中,我们可能想要为子组件传递一些模板片段,让子组件在它们的组件中渲染这些片段。

举例来说,这里有一个 <FancyButton> 组件,可以像这样使用:

<FancyButton>
  Click me! <!-- 插槽内容 -->
</FancyButton>

<FancyButton> 的模板是这样的:

<button class="fancy-btn">
  <slot></slot> <!-- 插槽出口 -->
</button>

<slot> 元素是一个插槽出口 (slot outlet),标示了父元素提供的插槽内容 (slot content) 将在哪里被渲染。

<button class="fancy-btn">Click me!</button>

 

通过使用插槽,<FancyButton> 仅负责渲染外层的 <button> (以及相应的样式),而其内部的内容由父组件提供。

理解插槽的另一种方式是和下面的 JavaScript 函数作类比,其概念是类似的:

// 父元素传入插槽内容
FancyButton('Click me!')
// FancyButton 在自己的模板中渲染插槽内容
function FancyButton(slotContent) {
  return `<button class="fancy-btn">
      ${slotContent}
    </button>`
}
<FancyButton>
  <span style="color:red">Click me!</span>
  <AwesomeIcon name="plus" />
</FancyButton>

通过使用插槽,<FancyButton> 组件更加灵活和具有可复用性。现在组件可以用在不同的地方渲染各异的内容,但同时还保证都具有相同的样式。

相关文章
|
6月前
|
JavaScript API
vue插槽slot、slot-scope、v-slot的区别以及嵌套插槽的使用
可以将 slot 理解成一个占位的东西,我们提前在模板中放置一个占位的标记,当其他地方要使用模板时就可以通过标记再传进来具体的内容,这样就可以实现更强的复用能力。
114 2
|
3月前
|
JavaScript
Vue学习之--------插槽【默认插槽、具名插槽、作用域插槽】(2022/8/30)
这篇文章详细介绍了Vue中的插槽(Slots)概念,包括默认插槽、具名插槽和作用域插槽的用法。通过实际的代码示例和项目结构,文章展示了如何在组件中定义和使用插槽,以及如何通过插槽向组件传递内容和数据。
Vue学习之--------插槽【默认插槽、具名插槽、作用域插槽】(2022/8/30)
|
3月前
|
JavaScript
Vue学习之--------插槽【默认插槽、具名插槽、作用域插槽】
这篇文章详细介绍了Vue.js中的插槽概念,包括默认插槽、具名插槽和作用域插槽的使用方式和实际应用示例,通过代码演示了如何在组件中定义和使用插槽来实现内容的灵活替换和展示。
Vue学习之--------插槽【默认插槽、具名插槽、作用域插槽】
|
4月前
vue2 插槽(默认插槽 slot 、具名插槽 v-slot 、作用域插槽 slot-scope -- 插槽传值 )
vue2 插槽(默认插槽 slot 、具名插槽 v-slot 、作用域插槽 slot-scope -- 插槽传值 )
791 1
|
5月前
|
JavaScript
vue的插槽(slot)
vue的插槽(slot)
|
6月前
|
JavaScript
vue系列之 插槽(Slot) 详解
vue系列之 插槽(Slot) 详解
vue系列之 插槽(Slot) 详解
|
6月前
|
JavaScript
#是啥,v-slot插槽的区别
#是啥,v-slot插槽的区别
|
API
66Vue - Slots 分发内容(具名Slots)
66Vue - Slots 分发内容(具名Slots)
47 0
|
6月前
|
JavaScript
Vue插槽(slot)的使用
Vue插槽(slot)的使用
41 1
|
JavaScript
vue 插槽的作用,用插槽slot-scope获取表格中的数据
vue 插槽的作用,用插槽slot-scope获取表格中的数据
259 0