Ant Design Vue 的 slots 是幹嘛的?

ponponon發表於2023-05-17

在 Ant Design Vue 中,slots 是用來定義元件內容的一種方式。它允許你在元件內部插入一些額外的內容或者修改元件的一部分內容。

在 Ant Design Vue 中,有兩種型別的 slots:預設 slot 和命名 slot。

預設 slot 可以理解為元件的主要內容,也是元件的預設展示內容。它是透過在元件內部使用 <slot> 標籤定義的,用於在父元件中插入內容。比如,在 <a-table> 元件中,表格的列內容就是透過預設 slot 定義的:

<a-table :columns="columns">
  <!-- 省略表格資料 -->
</a-table>

命名 slot 則是根據名稱來定義元件的內容,這些名稱可以由元件的開發者自行定義。命名 slot 是透過在元件內部使用 <template> 標籤定義的,用於在父元件中插入特定名稱的內容。比如,在 <a-table> 元件中,可以透過 slots 屬性來定義一些特定名稱的 slot,比如 customRender

<a-table :columns="columns">
  <template #customRender="{ text }">
    <a-tooltip>{{ text }}</a-tooltip>
  </template>
  <!-- 省略表格資料 -->
</a-table>

在上面的例子中,我們定義了一個名為 customRender 的 slot,用於在表格列中渲染自定義的內容。當 Ant Design Vue 渲染 <a-table> 元件時,會將 customRender slot 的內容插入到對應的表格列中。

使用 slots 可以使 Ant Design Vue 的元件更加靈活,可以透過插入自定義的內容來滿足不同的需求。同時,也可以透過定義特定名稱的 slot 來增強元件的功能。