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

Vue.extend 編程式插入組件的實(shí)現(xiàn)

 更新時(shí)間:2019年11月18日 16:33:37   作者:三只萌新  
這篇文章主要介紹了Vue.extend 編程式插入組件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

日常中我們要使用一個(gè)彈框組件的方式通常是先通過Vue.component 全局或是 component 局部注冊(cè)后,然后在模版中使用。接下來我們嘗試編程式的使用組件。

實(shí)現(xiàn)

其實(shí)步驟很簡單

  1. 通過 Vue.extend() 創(chuàng)建構(gòu)造器
  2. 通過 Vue.$mount() 掛載到目標(biāo)元素上
  3. 目標(biāo)實(shí)現(xiàn)一個(gè) alert 彈框,確認(rèn)和取消功能如下圖

document.createElement

其實(shí)想要插入一個(gè)元素,通過 document.createElement 就可以實(shí)現(xiàn),并非一定需要上面兩步,但是涉及到組件的復(fù)雜度、樣式設(shè)置、可維護(hù)性所以使用創(chuàng)建構(gòu)造器的方式比較可行。

Vue.extend()

首先來定義這個(gè)彈框的結(jié)構(gòu)和樣式,就是正常的寫組件即可

<template>
 <div class="grid">
   <h1 class="head">這里是標(biāo)題</h1>
   <div @click="close">{{ cancelText }}</div>
   <div @click="onSureClick">{{ sureText }}</div>
 </div>
</template>
<script>
export default {
 props:{
  close:{
   type:Function,
   default:()=>{}
  },
  cancelText:{
   type:String,
   default:'取消'
  },
  sureText:{
   type:String,
   default:'確定'
  }
 },
 methods:{
  onSureClick(){
   // 其他邏輯
   this.close()
  }
 }
};
</script>

將創(chuàng)建構(gòu)造器和掛載到目標(biāo)元素上的邏輯抽離出來,多處可以復(fù)用

export function extendComponents(component,callback){
 const Action = Vue.extend(component)
 const div = document.createElement('div')
 document.body.appendChild(div)
 const ele = new Action({
  propsData:{
   cancelText:'cancel',
   sureText:'sure',
   close:()=>{
    ele.$el.remove()
    callback&&callback()
   }
  }
 }).$mount(div)
}

上面代碼需要注意以下幾點(diǎn):

  1. Vue.extend 獲得是一個(gè)構(gòu)造函數(shù),可以通過實(shí)例化生成一個(gè) Vue 實(shí)例
  2. 實(shí)例化時(shí)可以向這個(gè)實(shí)例傳入?yún)?shù),但是需要注意的是 props 的值需要通過 propsData 屬性來傳遞
  3. 得到 Vue 實(shí)例后,我們需要通過一個(gè)目標(biāo)元素來掛載它,有人首先會(huì)想到掛載到 #app 上,這個(gè)掛載的過程是將目標(biāo)元素的內(nèi)容全部替換,所以一旦掛載到 #app 上,該元素的所有子元素都會(huì)消失被替換
  4. 針對(duì)第3點(diǎn),所以創(chuàng)建了一個(gè) div 元素插入到 body 中,我們將想要掛載的內(nèi)容替換到這個(gè)div上

Vue.extend 和 Vue.component component 的區(qū)別

  1. Vue.component component兩者都是需要先進(jìn)行組件注冊(cè)后,然后在 template 中使用注冊(cè)的標(biāo)簽名來實(shí)現(xiàn)組件的使用。Vue.extend 則是編程式的寫法
  2. 關(guān)于組件的顯示與否,需要在父組件中傳入一個(gè)狀態(tài)來控制 或者 在組件外部用 v-if/v-show 來實(shí)現(xiàn)控制,而 Vue.extend 的顯示與否是手動(dòng)的去做組件的掛載和銷毀。
  3. Vue.component component 在組件中需要使用 slot 等自定義UI時(shí)更加靈活,而 Vue.extend 由于沒有 template的使用,沒有slot 都是通過 props 來控制UI,更加局限一些。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue中ref標(biāo)簽屬性和$ref的關(guān)系解讀

    vue中ref標(biāo)簽屬性和$ref的關(guān)系解讀

    這篇文章主要介紹了vue中ref標(biāo)簽屬性和$ref的關(guān)系,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • vue強(qiáng)制刷新組件的方法示例

    vue強(qiáng)制刷新組件的方法示例

    這篇文章主要介紹了vue強(qiáng)制刷新組件的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • 如何利用vue3實(shí)現(xiàn)一個(gè)俄羅斯方塊

    如何利用vue3實(shí)現(xiàn)一個(gè)俄羅斯方塊

    俄羅斯方塊這個(gè)游戲相信大家都玩過,下面這篇文章主要給大家介紹了關(guān)于如何利用vue3實(shí)現(xiàn)一個(gè)俄羅斯方塊的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • vue-router的hooks用法詳解

    vue-router的hooks用法詳解

    這篇文章主要介紹了vue-router的hooks用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Vue-cli中為單獨(dú)頁面設(shè)置背景色的實(shí)現(xiàn)方法

    Vue-cli中為單獨(dú)頁面設(shè)置背景色的實(shí)現(xiàn)方法

    下面小編就為大家分享一篇Vue-cli中為單獨(dú)頁面設(shè)置背景色的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Vue 組件注冊(cè)全解析

    Vue 組件注冊(cè)全解析

    這篇文章主要介紹了Vue 組件注冊(cè)全解析的相關(guān)資料,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下
    2020-12-12
  • vue實(shí)現(xiàn)自定義多選與單選的答題功能

    vue實(shí)現(xiàn)自定義多選與單選的答題功能

    這篇文章主要介紹了使用vue實(shí)現(xiàn)自定義多選與單選的答題功能,vue組件中在表單方面提供了一個(gè)v-model指令,非常好用,具體實(shí)現(xiàn)過程大家跟隨腳本之家小編一起看看吧
    2018-07-07
  • Vue中$on和$emit的實(shí)現(xiàn)原理分析

    Vue中$on和$emit的實(shí)現(xiàn)原理分析

    這篇文章主要介紹了Vue中$on和$emit的實(shí)現(xiàn)原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 將VUE項(xiàng)目部署到服務(wù)器的詳細(xì)步驟

    將VUE項(xiàng)目部署到服務(wù)器的詳細(xì)步驟

    經(jīng)過一段時(shí)間的探索,前端后端都有大致的樣子了,下面就是部署到服務(wù)器,這篇文章主要給大家介紹了關(guān)于將VUE項(xiàng)目部署到服務(wù)器的詳細(xì)步驟,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Vue實(shí)現(xiàn)控制商品數(shù)量組件封裝及使用

    Vue實(shí)現(xiàn)控制商品數(shù)量組件封裝及使用

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)控制商品數(shù)量組件的封裝及使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評(píng)論

股票| 东辽县| 平谷区| 天峨县| 昌江| 澄城县| 儋州市| 莫力| 阜康市| 赤壁市| 灵川县| 绍兴市| 洪湖市| 周至县| 谢通门县| 福鼎市| 江津市| 平利县| 农安县| 突泉县| 广德县| 崇明县| 乐亭县| 宁津县| 永福县| 桐城市| 西乌珠穆沁旗| 富平县| 武强县| 台山市| 永德县| 宁海县| 蛟河市| 仲巴县| 衢州市| 福泉市| 铁岭市| 开化县| 武功县| 西贡区| 金堂县|