日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

Vue.js 插槽

發布時間:2025/3/21 vue 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vue.js 插槽 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

插槽內容

Vue 實現了一套內容分發的 API,這套 API 基于當前的?Web Components 規范草案,將?<slot>?元素作為承載分發內容的出口。

它允許你像這樣合成組件:

<navigation-link url="/profile">Your Profile </navigation-link>

然后你在?<navigation-link>?的模板中可能會寫為:

<av-bind:href="url"class="nav-link" ><slot></slot> </a>

當組件渲染的時候,這個?<slot>?元素將會被替換為“Your Profile”。插槽內可以包含任何模板代碼,包括 HTML:

<navigation-link url="/profile"><!-- 添加一個 Font Awesome 圖標 --><span class="fa fa-user"></span>Your Profile </navigation-link>

甚至其它的組件:

<navigation-link url="/profile"><!-- 添加一個圖標的組件 --><font-awesome-icon name="user"></font-awesome-icon>Your Profile </navigation-link>

如果?<navigation-link>?沒有包含一個?<slot>?元素,則任何傳入它的內容都會被拋棄。

具名插槽

有些時候我們需要多個插槽。例如,一個假設的?<base-layout>?組件的模板如下:

<div class="container"><header><!-- 我們希望把頁頭放這里 --></header><main><!-- 我們希望把主要內容放這里 --></main><footer><!-- 我們希望把頁腳放這里 --></footer> </div>

對于這樣的情況,<slot>?元素有一個特殊的特性:name。這個特性可以用來定義額外的插槽:

<div class="container"><header><slot name="header"></slot></header><main><slot></slot></main><footer><slot name="footer"></slot></footer> </div>

在向具名插槽提供內容的時候,我們可以在一個父組件的?<template>?元素上使用?slot?特性:

<base-layout><template slot="header"><h1>Here might be a page title</h1></template><p>A paragraph for the main content.</p><p>And another one.</p><template slot="footer"><p>Here's some contact info</p></template> </base-layout>

另一種?slot?特性的用法是直接用在一個普通的元素上:

<base-layout><h1 slot="header">Here might be a page title</h1><p>A paragraph for the main content.</p><p>And another one.</p><p slot="footer">Here's some contact info</p> </base-layout>

我們還是可以保留一個未命名插槽,這個插槽是默認插槽,也就是說它會作為所有未匹配到插槽的內容的統一出口。上述兩個示例渲染出來的 HTML 都將會是:

<div class="container"><header><h1>Here might be a page title</h1></header><main><p>A paragraph for the main content.</p><p>And another one.</p></main><footer><p>Here's some contact info</p></footer> </div>

插槽的默認內容

有的時候為插槽提供默認的內容是很有用的。例如,一個?<submit-button>?組件可能希望這個按鈕的默認內容是“Submit”,但是同時允許用戶覆寫為“Save”、“Upload”或別的內容。

你可以在組件模板里的?<slot>?標簽內部指定默認的內容來做到這一點。

<button type="submit"><slot>Submit</slot> </button>

如果父組件為這個插槽提供了內容,則默認的內容會被替換掉。

編譯作用域

當你想在插槽內使用數據時,例如:

<navigation-link url="/profile">Logged in as {{ user.name }} </navigation-link>

該插槽可以訪問跟這個模板的其它地方相同的實例屬性 (也就是說“作用域”是相同的)。但這個插槽不能訪問?<navigation-link>?的作用域。例如嘗試訪問?url?是不會工作的。牢記一條準則:

父組件模板的所有東西都會在父級作用域內編譯;子組件模板的所有東西都會在子級作用域內編譯。

作用域插槽

2.1.0+ 新增

有的時候你希望提供的組件帶有一個可從子組件獲取數據的可復用的插槽。例如一個簡單的?<todo-list>?組件的模板可能包含了如下代碼:

<ul><liv-for="todo in todos"v-bind:key="todo.id">{{ todo.text }}</li> </ul>

但是在我們應用的某些部分,我們希望每個獨立的待辦項渲染出和?todo.text?不太一樣的東西。這也是作用域插槽的用武之地。

為了讓這個特性成為可能,你需要做的全部事情就是將待辦項內容包裹在一個?<slot>?元素上,然后將所有和其上下文相關的數據傳遞給這個插槽:在這個例子中,這個數據是?todo?對象:

<ul><liv-for="todo in todos"v-bind:key="todo.id"><!-- 我們為每個 todo 準備了一個插槽,--><!-- 將 `todo` 對象作為一個插槽的 prop 傳入。--><slot v-bind:todo="todo"><!-- 回退的內容 -->{{ todo.text }}</slot></li> </ul>

現在當我們使用?<todo-list>?組件的時候,我們可以選擇為待辦項定義一個不一樣的?<template>?作為替代方案,并且可以通過?slot-scope?特性從子組件獲取數據:

<todo-list v-bind:todos="todos"><!-- 將 `slotProps` 定義為插槽作用域的名字 --><template slot-scope="slotProps"><!-- 為待辦項自定義一個模板,--><!-- 通過 `slotProps` 定制每個待辦項。--><span v-if="slotProps.todo.isComplete">?</span>{{ slotProps.todo.text }}</template> </todo-list>

在 2.5.0+,slot-scope?不再限制在?<template>?元素上使用,而可以用在插槽內的任何元素或組件上。

解構?slot-scope

如果一個 JavaScript 表達式在一個函數定義的參數位置有效,那么這個表達式實際上就可以被?slot-scope?接受。也就是說你可以在支持的環境下 (單文件組件或現代瀏覽器),在這些表達式中使用?ES2015 解構語法。例如:

<todo-list v-bind:todos="todos"><template slot-scope="{ todo }"><span v-if="todo.isComplete">?</span>{{ todo.text }}</template> </todo-list>

這會使作用域插槽變得更干凈一些。

?

from:?https://cn.vuejs.org/v2/guide/components-slots.html

總結

以上是生活随笔為你收集整理的Vue.js 插槽的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 99亚洲国产精品 | 成人免费网站黄 | 最新黄色在线 | 日韩短视频 | 亚洲午夜在线观看 | 妖精视频一区二区 | 一本久道视频一本久道 | 高跟鞋丝袜猛烈xxxx | 黄色av网站在线播放 | 熟女自拍一区 | 日韩电影在线一区 | 国产精品 欧美 日韩 | 精品日本一区二区 | 国产天天综合 | 免费一级做a爰片久久毛片潮 | 国产精品免费av | 青青草一区二区三区 | 精品国产污污免费网站入口 | 97蜜桃网| 日韩欧美成人一区二区三区 | 精品国产av一区二区 | 在线xxxx | 国产强被迫伦姧在线观看无码 | 邻居交换做爰2 | 恶虐女帝安卓汉化版最新版本 | av加勒比在线 | 在线观看国产麻豆 | 日本精品人妻无码免费大全 | 亚洲aⅴ| 色在线免费观看 | 国产精品12区 | 日韩三级中文 | 一级性生活大片 | 性福宝av | 欧美三级大片 | 黄色小视频在线播放 | 欧美日韩一区视频 | 色综合久久88色综合天天免费 | av鲁丝一区鲁丝二区鲁丝 | 91在现看 | 亚洲天堂系列 | 91精品国产综合久久久久 | 国产一级黄色 | 永久免费黄色 | 欧美三级黄 | 老地方在线观看免费动漫 | 激情小视频在线观看 | 无码免费一区二区三区免费播放 | 日本久久免费 | 69福利社区 | 中文字幕第88页 | 中文字幕有码av | 性欧美巨大| 日本东京热一区二区三区 | 五月天激情丁香 | 国产高清视频在线观看 | 亚洲人一区二区三区 | 日韩视频在线观看一区二区 | 午夜在线观看视频 | 国产成人免费在线观看 | 性xxxx狂欢老少配o | 肥臀浪妇太爽了快点再快点 | 欧美成本人视频 | 日韩午夜激情视频 | 亚洲一区福利视频 | 97精品一区二区视频在线观看 | 国内精品小视频 | 国产激情成人 | 日韩国产一区 | 久久久久久国产精品无码 | 欧美精品动漫 | 91高清视频在线观看 | 欧美黄页在线观看 | 日日摸日日添日日碰9学生露脸 | 国产区欧美区日韩区 | www.在线播放 | 久久久91视频 | 色资源av | 欧美另类精品xxxx孕妇 | 亚洲 欧美 日韩在线 | 精品视频在线观看免费 | se婷婷| 日本少妇喷水 | 上海毛片 | 五十路中出 | 久久精品一区二区国产 | 人人妻人人做人人爽 | 黄色avav| 一本色道久久综合亚洲精品图片 | 成年人看片网站 | 精品国产乱码久久久久久郑州公司 | 中文字幕精 | 久久99国产精品视频 | 日韩伊人久久 | av基地网| 欧美zzz物交| 欧美激情自拍 | 男男做爰猛烈啪啪高 | 四虎永久在线精品 |