最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue插槽slot的理解和使用方法

 更新時間:2019年04月03日 11:14:32   作者:居老師的狗子  
這篇文章主要給大家介紹了關于vue中插槽slot的理解和使用方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用vue具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

Vue的slot插槽,可以從字面意思來了解用途,占用占坑的意思,既然是占坑肯定是先占坑后面有其他具體的內容來替換代替。根據(jù)slot的應用場景可以分為匿名slot和具名slot。

一、個人理解及插槽的使用場景

剛開始看教程我的疑惑是為什么要用插槽,它的使用場景是什么,很多解釋都是“父組件向子組件傳遞dom時會用到插槽”,這并不能很好的解決我的疑惑。既然你用了子組件,你為什么要給她傳一些dom,直接去定義復用的子組件不就好了。后來想想覺得一個復用的組件在不同的地方只有些許變化,如果去重寫子組件是很不明智的一件事,當然也可以將不同之處都寫在子組件里,然后通過父組件傳來的標識進行選擇顯示。其實質是對子組件的擴展,通過slot插槽向組件內部指定位置傳遞內容,即將<slot></slot>元素作為承載分發(fā)內容的出口;

二、用于理解的例子

目前還沒接觸到使用插槽解決實際問題很好的例子,只能這樣去為了理解插槽而用,可能并沒有很好的利用到插槽的好處。

在父組件定義想要傳入子組件作為插槽的內容,App.vue

<template>
 <div id="app">
 <div>
 <input type="text" v-model="info">
 <button @click="handleClick">添加</button>
 </div>
 <todolist v-for="item in list" :key="item" :message="msg">
 <template v-slot:item="itemProps" >
 <!-- tips1:<span>即為插槽內容
        tips2:item是插槽的名字,為具名插槽,可對應插入到子組件中具體的插槽位置
  tips3:itemProps可以獲取到子組件(即插槽 prop)傳出來的狀態(tài)(值),
    插槽 prop 的對象命名為 itemProps,可任意命名,itemProps變量存在于 <template> 作用域中
  -->
 <span :style="{fontSize: '20px', color: itemProps.checked ? 'red': 'blue'}">{{item}}</span>
 </template>
 </todolist>
 </div>
</template>

<script>

 import todolist from './components/todolist.vue';
export default {
 name: 'App',
 components: {
 todolist
 },
 data(){
 return {
 msg: '4-2-05',
 info: '',
 list: [],
 }
 },
 methods: {
 handleClick() {
 // 獲取到input輸入的東西,然后加入到數(shù)組中
 this.list.push(this.info);
 this.info = ''
 }
 },
}
</script>

<style>
</style>

在子組件利用<slot></slot>元素作為承載分發(fā)內容的出口,父組件的插槽內容將在其中顯示,todolist.vue

<template>
 <div>
 {{message}}
 <li class="item">
 <input type="checkbox" v-model="checked">
 <slot name="item" v-bind="{checked}" ></slot>
 <!--插槽內容能夠訪問子組件中才有的數(shù)據(jù)是很有用的,又因為父級模板里的所有內容都是在父級作用域中編譯的;子模板里的所有內容都是在子作用域中編譯的
 所以得想辦法獲取到子組件的數(shù)據(jù)。-->
 <!--給子組件綁定一個動態(tài)參數(shù),checked作為一個 <slot> 元素的特性綁定上去,綁定在 <slot> 元素上的特性被稱為插槽 prop-->
 </li>
 </div>
</template>

<script>
 export default {
 props: ['item','message'],
 // 因為父組件在插槽內容里使用item, 即此句代碼<span>{{item}}</span>
 // 相當于需要傳遞給子組件的內容,也就是通常的父子組件通信,所以在子組件需要通過props來獲取
 data() {
  return {
  checked: false,
  }
 },
 created() {
  console.log(this.message);
 }
 }
</script>

<style scoped>
 .item {
 color: red;
 }
 li{
 list-style: none;
 }
</style>

三、具體知識點

1、具名插槽

上面的例子只使用了一個slot插槽,但有時我們在一個組件里可能會多處使用插槽,我們希望在不同的插槽處插入不同的內容,此時便需要進行區(qū)分,<slot> 元素有一個特殊的特性:name。這個特性可以用來定義插槽的名字,在向具名插槽提供內容的時候,我們可以在一個 <template> 元素上使用

 v-slot 指令,并以 v-slot 的參數(shù)的形式寫出插槽的名稱,使其一一對應。

 <slot name="header"></slot>
 <slot name="content"></slot>
 <slot ></slot>
//一個不帶 name 的 <slot> 出口會帶有隱含的名字“default”。

2、作用域插槽

為了使父組件的插槽內容可以使用子組件的數(shù)據(jù),可以在 <slot> 元素上綁定想要傳遞的數(shù)據(jù),此特性被稱為插槽 prop。同時在父級作用域中,給 v-slot 帶一個值來定義我們提供的插槽 prop 的名字,便可獲取到。但此內容只在 <template>作用域內可用。

四、自 2.6.0 起有所更新的語法變化

1、帶有slot特性的具名插槽

2、帶有slot-scope特性的作用域插槽

五、突發(fā)奇想的調換

因為看到一個別人寫的關于slot的帖子,他應該是寫錯了插槽在子父組件的內容,這也就相當于從子組件傳一個插槽內容給父組件。仔細想想這思路有問題,既然都引用了子組件,父組件便可以訪問到子組件的所有內容,現(xiàn)在卻非要通過插槽來傳遞,多此一舉。

然后我就試了一下將插槽內容卸載子組件里,果然出現(xiàn)了報錯,如下:

  - <template v-slot> can only appear at the root level inside the receiving the component(slot的只能出現(xiàn)在接受組件的根級別)

也就是只能在父組件使用。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關文章

  • Vue PC端實現(xiàn)掃碼登錄功能示例代碼

    Vue PC端實現(xiàn)掃碼登錄功能示例代碼

    目前大多數(shù)PC端應用都有配套的移動端APP,如微信,淘寶等,通過使用手機APP上的掃一掃功能去掃頁面二維碼圖片進行登錄,使得用戶登錄操作更方便,安全,快捷,這篇文章主要介紹了Vue PC端如何實現(xiàn)掃碼登錄功能,需要的朋友可以參考下
    2023-01-01
  • vue+mockjs模擬數(shù)據(jù)實現(xiàn)前后端分離開發(fā)的實例代碼

    vue+mockjs模擬數(shù)據(jù)實現(xiàn)前后端分離開發(fā)的實例代碼

    本篇文章主要介紹了vue+mockjs模擬數(shù)據(jù)實現(xiàn)前后端分離開發(fā)的實例代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • VUE3常見面試題總結大全(看這一篇就夠了)

    VUE3常見面試題總結大全(看這一篇就夠了)

    Vue.js是一個流行的前端JavaScript框架,用于構建用戶界面和單頁應用,這篇文章主要給大家介紹了關于VUE3常見面試題總結的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-09-09
  • 詳解vue中在循環(huán)中使用@mouseenter 和 @mouseleave事件閃爍問題解決方法

    詳解vue中在循環(huán)中使用@mouseenter 和 @mouseleave事件閃爍問題解決方法

    這篇文章主要介紹了詳解vue中在循環(huán)中使用@mouseenter 和 @mouseleave事件閃爍問題解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • vue-element-admin開發(fā)教程(v4.0.0之后)

    vue-element-admin開發(fā)教程(v4.0.0之后)

    由于vue-element-admin的架構再4.0.0版本后做了重構,整體結構上和之前的還是很相似的,但是也有些變化,本文就介紹vue-element-admin開發(fā)教程(v4.0.0之后),感興趣的可以了解一下
    2022-04-04
  • vue3中引入svg矢量圖的實現(xiàn)示例

    vue3中引入svg矢量圖的實現(xiàn)示例

    在項目開發(fā)過程中,我們經(jīng)常會用到svg矢量圖,本文主要介紹了vue3中引入svg矢量圖的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Element-UI使用el-row高度設置方式

    Element-UI使用el-row高度設置方式

    這篇文章主要介紹了Element-UI使用el-row高度設置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 如何在vue3中使用滑塊檢驗vue-puzzle-verification

    如何在vue3中使用滑塊檢驗vue-puzzle-verification

    這篇文章主要介紹了在vue3中使用滑塊檢驗vue-puzzle-verification的相關資料,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • Vue引入echarts方法與使用介紹

    Vue引入echarts方法與使用介紹

    Echarts,它是一個與框架無關的?JS?圖表庫,但是它基于Js,這樣很多框架都能使用它,例如Vue,估計IONIC也能用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • vue實現(xiàn)登陸登出的實現(xiàn)示例

    vue實現(xiàn)登陸登出的實現(xiàn)示例

    本篇文章主要介紹了vue實現(xiàn)登陸登出的實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09

最新評論

临武县| 河南省| 威海市| 天门市| 崇义县| 凤阳县| 江口县| 贵定县| 鱼台县| 日照市| 鱼台县| 河间市| 玉龙| 凤庆县| 东莞市| 灵武市| 腾冲县| 玉田县| 平昌县| 山阴县| 布拖县| 乡宁县| 绍兴县| 云梦县| 天柱县| 石家庄市| 宜黄县| 环江| 五莲县| 二连浩特市| 房产| 台东县| 宝兴县| 霍山县| 大同县| 临泽县| 房产| 南通市| 双牌县| 胶州市| 郑州市|