中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue3中props組件抽離的方法

發布時間:2022-04-24 10:54:20 來源:億速云 閱讀:593 作者:zzz 欄目:開發技術

這篇文章主要講解了“vue3中props組件抽離的方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“vue3中props組件抽離的方法”吧!

    props組件抽離

    場景

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

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

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

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

    vue3中props組件抽離的方法

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

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

    這里貼出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>

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

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

    接下來貼出部分調用者組件當中的代碼。

    <!-- 展示頂部標簽名 --> 
    <s-header :name="'商品詳情'"></s-header>
     
    <!-- 綁定子組件emit的方法,當抽離組件emit的時候觸發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>

    感謝各位的閱讀,以上就是“vue3中props組件抽離的方法”的內容了,經過本文的學習后,相信大家對vue3中props組件抽離的方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    水富县| 鄂州市| 商丘市| 赫章县| 凭祥市| 阿拉善盟| 津南区| 阿坝县| 彭泽县| 斗六市| 绵阳市| 彰化市| 嘉兴市| 沙洋县| 电白县| 腾冲县| 晋城| 丹东市| 山东省| 新田县| 祁阳县| 万盛区| 汨罗市| 来凤县| 上栗县| 临泉县| 盘山县| 南和县| 绥江县| 社旗县| 卢龙县| 霍城县| 安阳市| 通化县| 中卫市| 耒阳市| 姜堰市| 勐海县| 新邵县| 石柱| 蓝山县|