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

vue3中的props組件抽離

 更新時間:2022年04月23日 09:28:21   作者:黑貓幾絳  
這篇文章主要介紹了vue3中的props組件抽離,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

props組件抽離

引言

假設你已經(jīng)了解了Vue3的setup函數(shù),不了解的話可以先看看這篇文章。 

vue3中setup函數(shù)的使用

在setup函數(shù)中我們知道它有兩個參數(shù),用于接收父組件傳遞參數(shù)的props、與負責表示上下文對象的context,在context中常用的是分發(fā)自定義事件的函數(shù)emit,用于組件抽象化后的通信。

在了解了概念后我們可以在本文中動手抽象分離一個組件。

場景

現(xiàn)在假設需要抽象出一個移動端的頂部Header組件,首先想想一個頂部組件平時有哪些功能:名稱、返回、返回主頁、更多功能。

如果某個頁面不需要使用返回主頁這個功能,使用時不進行參數(shù)傳遞即可。

設置好props后在setup中打印props可以看到成功綁定的傳參。

export default {
  props: {
    name: {
      type: String,
      default: ''
    },
    back: {
      type: String,
      default: ''
    },
    home: {
      type: Boolean,
      default: false
    },
    more: {
      type: Boolean,
      default: false
    }
  }
}

在處理完props傳參后我們可以考慮context部分,比如說點擊回退標簽后觸發(fā)某個事件,那么就會在身為調(diào)用者的父組件中綁定某個回調(diào)函數(shù),在子組件emit后執(zhí)行該函數(shù)。

因此在和props同級的情況下聲明將要emit的函數(shù)名稱。

這里貼出template部分與script部分的代碼。

<template>
? <header class="simple-header van-hairline--bottom">
? ? <i v-if="!home" class="nbicon nbfanhui" @click="goBack"></i>
? ? <i v-else class="nbicon nbhome"></i>
? ? <div class="simple-header-name">{{ name }}</div>
? ? <i v-if="more" class="nbicon nbmore"></i>
? </header>
</template>
<script>
import { ref } from 'vue'
import { useRouter } from 'vue-router'
export default {
? props: {
? ? name: {
? ? ? type: String,
? ? ? default: ''
? ? },
? ? back: {
? ? ? type: String,
? ? ? default: ''
? ? },
? ? home: {
? ? ? type: Boolean,
? ? ? default: false
? ? },
? ? more: {
? ? ? type: Boolean,
? ? ? default: false
? ? }
? },
? emits: ['callback'],
? setup(props, context) {
? ? const home = ref(props.home)
? ? const more = ref(props.more)
? ? const router = useRouter()
? ? const goBack = () => {
? ? ? if (!props.back) {
? ? ? ? router.go(-1)
? ? ? } else {
? ? ? ? router.push({ path: props.back })
? ? ? }
? ? ? context.emit('callback')
? ? }
? ? return {
? ? ? goBack,
? ? ? home
? ? }
? }
}
</script>

其實正確的方法應該是,先在多個頁面中編碼完畢后再抽離組件。

不過這里只是演示作用,所以就提前清除了具體需要抽離出什么內(nèi)容。

接下來貼出部分調(diào)用者組件當中的代碼。

<!-- 展示頂部標簽名 --> 
<s-header :name="'商品詳情'"></s-header>
 
<!-- 綁定子組件emit的方法,當抽離組件emit的時候觸發(fā)close方法 -->
<s-header :name="'訂單詳情'" @callback="close"></s-header>
 
<!-- 設置返回主頁的按鈕為true -->
<s-header :name="'購物車'" :home="true"></s-header>

這樣我們就成功的抽離出來了一個簡單的組件,通過父組件的傳值來進行不同的顯示。

當然,抽離組件可以進階,比如使用slot插槽,用法和以前一樣。

<!-- 父 -->
<s-header :name="'關(guān)于我們'">
    <template v-slot:test>
        hello 黑貓幾絳!
    </template>
</s-header>
 
<!-- 子 -->
<slot name="test"></slot> 

組件模板抽離的寫法

  • 方法一:使用JavaScript標簽分離模板
  • 方法二:使用template標簽分離模板
<!DOCTYPE html>
<html>
?? ?<head>
?? ??? ?<meta charset="utf-8">
?? ??? ?<title></title>
?? ?</head>
?? ?<body>
?? ??? ?<div id="app">
?? ??? ??? ?<cpn></cpn>
?? ??? ??? ?<tmp></tmp>
?? ??? ?</div>
?? ?</body>
?? ?<script src="https://cdn.bootcss.com/vue/2.5.2/vue.min.js"></script>
?? ?<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js"></script>
?? ?<script src="https://cdn.bootcss.com/vuex/3.0.1/vuex.min.js"></script>
</html>

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue項目依賴包安裝及配置過程

    Vue項目依賴包安裝及配置過程

    這篇文章主要介紹了Vue項目依賴包安裝及配置過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • vue-cli3 配置開發(fā)與測試環(huán)境詳解

    vue-cli3 配置開發(fā)與測試環(huán)境詳解

    這篇文章主要介紹了vue-cli3 配置開發(fā)與測試環(huán)境詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • vue中如何使用vue-touch插件

    vue中如何使用vue-touch插件

    這篇文章主要介紹了vue中使用vue-touch插件的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • vue2.0構(gòu)建單頁應用最佳實戰(zhàn)

    vue2.0構(gòu)建單頁應用最佳實戰(zhàn)

    這篇文章主要為大家分享了vue2.0構(gòu)建單頁應用最佳實戰(zhàn)案例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Vuex 使用 v-model 配合 state的方法

    Vuex 使用 v-model 配合 state的方法

    這篇文章主要介紹了Vuex 使用 v-model 配合 state的方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • 面試官常問Vue和React區(qū)別解析

    面試官常問Vue和React區(qū)別解析

    Vue和React都是流行的前端框架,它們有很多相似之處,如組件化和使用虛擬DOM,但是,它們在設計理念、組件存在形式、diff優(yōu)化和中文文檔方面存在一些不同,這篇文章給大家介紹面試官常問Vue和React區(qū)別,感興趣的朋友一起看看吧
    2025-02-02
  • Vue中插槽slot的用法詳解

    Vue中插槽slot的用法詳解

    插槽(Slot)是Vue.js中一個非常重要的概念,它極大地提高了組件的復用性和靈活性,通過插槽,我們可以自定義組件的內(nèi)容,使其能夠適應不同的場景,本文將結(jié)合實際案例,詳細介紹Vue中插槽的基本用法、類型以及高級技巧,需要的朋友可以參考下
    2024-11-11
  • Vue2+Echarts封裝組件之專注邏輯,圖表生成自動化方式

    Vue2+Echarts封裝組件之專注邏輯,圖表生成自動化方式

    文章介紹了使用Vue2封裝的Echarts圖表組件,簡化了圖表的生成和渲染過程,提供了多種圖表類型和交互功能,提高了開發(fā)效率,幫助開發(fā)者專注于業(yè)務邏輯的開發(fā)
    2025-02-02
  • Vue編程三部曲之將template編譯成AST示例詳解

    Vue編程三部曲之將template編譯成AST示例詳解

    這篇文章主要為大家介紹了Vue編程三部曲之將template編譯成AST示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 粘貼可用的element-ui validateField局部校驗

    粘貼可用的element-ui validateField局部校驗

    這篇文章主要為大家介紹了粘貼可用element-ui中validateField局部校驗示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01

最新評論

天台县| 东山县| 清原| 嘉黎县| 剑河县| 香河县| 新建县| 休宁县| 武义县| 社会| 昌江| 永胜县| 碌曲县| 呼图壁县| 马山县| 恩施市| 革吉县| 台山市| 军事| 江阴市| 调兵山市| 杭锦旗| 原平市| 澄迈县| 全州县| 宜城市| 岳普湖县| 盱眙县| 邢台县| 汉寿县| 余干县| 同仁县| 湘阴县| 宁乡县| 宜丰县| 揭阳市| 普格县| 阿坝县| 洪湖市| 襄垣县| 大悟县|