欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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="'關于我們'">
    <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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • vue中render函數(shù)的使用詳解

    vue中render函數(shù)的使用詳解

    這篇文章主要介紹了vue中render函數(shù)的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • vue Treeselect 樹形下拉框:獲取選中節(jié)點的ids和lables操作

    vue Treeselect 樹形下拉框:獲取選中節(jié)點的ids和lables操作

    這篇文章主要介紹了vue Treeselect 樹形下拉框:獲取選中節(jié)點的ids和lables操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue中?$forceUpdate的使用解析

    vue中?$forceUpdate的使用解析

    這篇文章主要介紹了vue中?$forceUpdate的使用解析,該方案是比較好的一種方式,比如說我們嘗試直接給某個??object??增加一個屬性,發(fā)現(xiàn)頁面上沒有效果;直接將length變成0來清空數(shù)組,下文詳細資料需要的小伙伴可以參考一下
    2022-04-04
  • 解決Vue2?axios發(fā)請求報400錯誤"Error:?Request?failed?with?status?code?400"

    解決Vue2?axios發(fā)請求報400錯誤"Error:?Request?failed?with?s

    這篇文章主要給大家介紹了關于如何解決Vue2?axios發(fā)請求報400錯誤"Error:?Request?failed?with?status?code?400"的相關資料,在Vue應用程序中我們通常會使用axios作為網(wǎng)絡請求庫,需要的朋友可以參考下
    2023-07-07
  • vuex 中輔助函數(shù)mapGetters的基本用法詳解

    vuex 中輔助函數(shù)mapGetters的基本用法詳解

    mapGetters輔助函數(shù)僅僅是將 store 中的 getter 映射到局部計算屬性,在組件或界面中不使用mapGetter調(diào)用映射vuex中的getter,在組件或界面中使用mapGetter調(diào)用映射vuex中的getter,具體內(nèi)容跟隨小編一起通過本文學習吧 
    2021-07-07
  • Swiper在Vue2中的簡單使用方法

    Swiper在Vue2中的簡單使用方法

    這篇文章主要給大家介紹了關于Swiper在Vue2中的簡單使用方法,swiper是一款現(xiàn)代化的移動端輪播組件,可以在Vue中輕松使用,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • 如何一步步基于element-ui封裝查詢組件

    如何一步步基于element-ui封裝查詢組件

    這篇文章主要給大家介紹了關于如何一步步基于element-ui封裝查詢組件的相關資料,本文通過示例代碼介紹的非常詳細,對大家學習或者使用vue.js具有一定的參考學習價值,需要的朋友可以參考下
    2021-10-10
  • vue項目使用electron進行打包操作的全過程

    vue項目使用electron進行打包操作的全過程

    我們都知道Electron項目分為了主進程和渲染進程,主進程其實就是我們的Electron,渲染進程就相當于我們的Vue項目,下面這篇文章主要給大家介紹了關于vue項目使用electron進行打包操作的全過程,需要的朋友可以參考下
    2023-03-03
  • 淺談Vue.js之初始化el以及數(shù)據(jù)的綁定說明

    淺談Vue.js之初始化el以及數(shù)據(jù)的綁定說明

    今天小編就為大家分享一篇淺談Vue.js之初始化el以及數(shù)據(jù)的綁定說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue實現(xiàn)簡單計算商品價格

    vue實現(xiàn)簡單計算商品價格

    這篇文章主要為大家詳細介紹了vue實現(xiàn)簡單計算商品價格,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09

最新評論