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

Vue插槽的作用

 更新時間:2022年09月30日 11:21:14   作者:月光曬了很涼快  
插槽(slot)是 vue 為組件的封裝者提供的能力。允許開發(fā)者在封裝組件時,把不確定的、希望由用戶指定的部分定義為插槽??梢园巡宀壅J為是組件封裝期間,為用戶預留的內容的占位符

1. 默認插槽

概述:

當子組件模板只有一個沒有屬性的插槽時,父組件傳入的整個內容片段將插入到插槽所在的 DOM 位置,并替換掉插槽標簽本身。

使用:

父組件:

<template>
  <div>
    <h3 class="title">App組件</h3>
    <hr />
    <!-- 替換默認插槽中的內容 -->
    <child>
      <h3>我是標題</h3>
    </child>
    <!-- 顯示默認插槽中的內容 -->
    <child />
    <!-- 顯示默認插槽中的內容 -->
    <child></child>
  </div>
</template>
<script>
import child from './components/child.vue'
export default {
  components: {
    child
  },
  data() {
    return {}
  },
  methods: {}
}
</script>
<style lang="scss" scoped></style>

子組件:

<template>
  <div>
    <h3>child組件</h3>
    <!-- 聲明位置,用于在調用此組件為雙標簽時,中間內容顯示的位置 -->
    <!-- 單個插槽,一個組件只能有一個默認插槽 -->
    <!-- <slot name="default"></slot> -->
    <!-- 簡寫 -->
    <slot>默認</slot>
  </div>
</template>
<script>
export default {
  data() {
    return {}
  },
  methods: {}
}
</script>
<style lang="scss" scoped></style>

2. 具名插槽

概述:

有時我們需要多個插槽,來完成對應的數(shù)據(jù)自定義顯示。一個不帶 name 的 <slot> 插槽會帶有隱含的名字“default”,即默認插槽。帶 name 即為具名插槽。

使用:

父組件:

<template>
  <div>
    <h3 class="title">App組件</h3>
    <hr />
    <child>
      <!-- 具名插槽 -->
      <!-- vue2.6之前寫法 -- 重復調用會依次執(zhí)行顯示,即都會顯示 -->
      <!-- <h3 slot="header">我是文章標題1</h3> -->
      <!-- <h3 slot="header">我是文章標題2</h3> -->
      <!-- <h3 slot="header">我是文章標題3</h3> -->
      <!-- vue2.6及之后寫法 它只能寫在template中,不能直接寫在html標簽上 -->
      <!-- vue2.6之后的具名插槽,重復調用,只會執(zhí)行最后1次 -->
      <!-- <template v-slot:header> -->
      <!-- 簡寫:v-slot:header ==  #header -->
      <template #header>
        <h3>我是文章標題1</h3>
      </template>
      <template #header>
        <h3>我是文章標題2</h3>
      </template>
      <!-- 只會顯示它 -->
      <template #header>
        <h3>我是文章標題3</h3>
      </template>
      <!-- 默認插槽 -->
      <div>默認插槽</div>
    </child>
  </div>
</template>
<script>
// 同步導入
import child from './components/child.vue'
export default {
  components: {
    child
  },
  data() {
    return {}
  },
  methods: {}
}
</script>
<style lang="scss" scoped></style>

子組件:

<template>
  <div>
    <h3>child組件</h3>
    <!-- 具名插槽,給slot添加一個名稱,名稱不能重復 -->
    <slot name="header">默認頭部</slot>
    <!-- 默認插槽 -->
    <slot>默認</slot>
  </div>
</template>
<script>
export default {
  data() {
    return {}
  },
  methods: {}
}
</script>
<style lang="scss" scoped></style>

3. 作用域插槽

概述:

作用域插槽是一種特殊類型的插槽,用作一個 (能被傳遞數(shù)據(jù)的)可重用模板,來代替已經(jīng)渲染好的元素。在子組件中,只需將數(shù)據(jù)傳遞到插槽,就像你將 prop 傳遞給組件一樣。

在封裝組件的過程中,可以為預留的<slot>插槽綁定props 數(shù)據(jù),這種帶有props 數(shù)據(jù)的 <slot> 叫做“作用域插槽”。作用域插槽就是在具名插槽的基礎上,多了數(shù)據(jù)的傳遞。

語法:

# 子組件中
Vue.component('child', {
template: `
<div class="child">
    <slot name="default" text="我是子組件中的內容"></slot>
</div>
`
})
# 父組件中
<div class="parent">
    <child>
        // 老寫法
        <div name="default" slot-scope="props">
            <div>父組件</div>
            <h3>{{ props.text }}</h3>
        </div>
        // 新寫法
        <template #default="props">
            <div>
                <div>父組件</div>
                <h3>{{ props.text }}</h3>
            </div>
        </template>
    </child>
</div>

使用:

父組件:

<template>
  <div>
    <h3 class="title">App組件</h3>
    <hr />
    <child :users="users">
      <!-- vue2.6之前的寫法 -->
      <!-- <button slot="del" slot-scope="index" @click="del(index)">刪除</button> -->
      <!-- vue2.6之后的寫法 -->
      <!-- <template v-slot:del="index">,即<template v-slot:[變量]="index">-->
      <!-- vue2.6之后的寫法簡寫 -->
      <!-- 父組件接收子組件通過作用于插槽傳過來的index -->
      <template #del="index">
        <!-- 把子組件中的span標簽替換為了button標簽 -->
        <button @click="del(index)">刪除</button>
      </template>
    </child>
  </div>
</template>
<script>
// 同步導入
import child from "./components/child.vue";
export default {
  components: {
    child,
  },
  data() {
    return {
      users: [
        { id: 1, name: "張三" },
        { id: 2, name: "李四" },
        { id: 3, name: "王五" },
      ],
    };
  },
  methods: {
    // 傳過來的index是一個對象,所以需要解構一下
    del({ index }) {
      console.log("app", index);
    },
  },
};
</script>
<style lang="scss" scoped></style>

子組件:

<template>
  <div>
    <h3>child組件</h3>
    <hr />
    <ul>
      <li v-for="(item, index) in users" :key="item.id">
        <span>
          {{ item.name }}
        </span>
        <span>
          <!-- 讓插槽傳數(shù)據(jù) 作用域插槽 -->
          <!-- 子組件將index通過作用域插槽傳給父組件 -->
          <slot name="del" :index="index">
            <span @click="del(index)">刪除</span>
          </slot>
        </span>
      </li>
    </ul>
  </div>
</template>
<script>
export default {
  props: ['users'],
  data() {
    return {}
  },
  methods: {
    del(index) {
      console.log(index)
    }
  }
}
</script>
<style lang="scss" scoped></style>

到此這篇關于Vue插槽的作用的文章就介紹到這了,更多相關Vue插槽內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決npm安裝錯誤:No matching version found for XXX@3.3.6問題

    解決npm安裝錯誤:No matching version found for&

    這篇文章主要介紹了解決npm安裝錯誤:No matching version found for XXX@3.3.6問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • vue中如何禁止input框和textarea編輯

    vue中如何禁止input框和textarea編輯

    這篇文章主要介紹了vue中如何禁止input框和textarea編輯,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue格式化element表格中的時間為指定格式

    vue格式化element表格中的時間為指定格式

    這篇文章主要介紹了vue中格式化element表格中的時間為指定格式,需要的朋友可以參考下
    2022-05-05
  • 如何實現(xiàn)一個簡易版的vuex持久化工具

    如何實現(xiàn)一個簡易版的vuex持久化工具

    這篇文章主要介紹了實現(xiàn)一個簡易版的vuex持久化工具,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • Vue實例簡單方法介紹

    Vue實例簡單方法介紹

    這篇文章主要為大家詳細介紹了Vue實例的一些簡單方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • vue?+?electron應用文件讀寫操作

    vue?+?electron應用文件讀寫操作

    這篇文章主要介紹了vue?+?electron應用文件讀寫操作,如果要制作的應用并不復雜,完全可以將數(shù)據(jù)存儲在本地文件當中,然后應用就可以通過這些文件進行數(shù)據(jù)的讀寫,需要的朋友參考下吧
    2022-06-06
  • Vue3中事件總線的具體使用

    Vue3中事件總線的具體使用

    本文主要介紹了Vue3中事件總線的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • 詳解Vue.js入門環(huán)境搭建

    詳解Vue.js入門環(huán)境搭建

    這篇文章主要介紹了詳解Vue.js入門環(huán)境搭建,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • vue實現(xiàn)前端按鈕組件權限管理

    vue實現(xiàn)前端按鈕組件權限管理

    這篇文章主要為大家介紹了vue實現(xiàn)前端按鈕組件權限管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 從0到1構建vueSSR項目之node以及vue-cli3的配置

    從0到1構建vueSSR項目之node以及vue-cli3的配置

    這篇文章主要介紹了從0到1構建vueSSR項目之node以及vue-cli3的配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03

最新評論

嘉黎县| 托克托县| 本溪市| 简阳市| 改则县| 南郑县| 托克逊县| 绥滨县| 鹤岗市| 长葛市| 泰安市| 荔波县| 大冶市| 奉化市| 玉龙| 波密县| 南岸区| 栖霞市| 乌审旗| 兴海县| 桃源县| 平武县| 无锡市| 青田县| 吉木萨尔县| 泽普县| 唐海县| 河源市| 盘锦市| 邛崃市| 海安县| 水城县| 方正县| 柳州市| 大化| 寿光市| 宜兰县| 嵊泗县| 永仁县| 扎鲁特旗| 安阳县|