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

vue 動態(tài)創(chuàng)建組件的兩種方法

 更新時間:2020年12月31日 11:07:38   作者:_冰  
這篇文章主要介紹了vue 動態(tài)創(chuàng)建組件的兩種方法,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下

Vue動態(tài)創(chuàng)建組件實例并掛載到body

方式一

import Vue from 'vue'

/**
 * @param Component 組件實例的選項對象
 * @param props 組件實例中的prop
 */
export function create(Component, props) {
 const comp = new (Vue.extend(Component))({ propsData: props }).$mount()
 
 document.body.appendChild(comp.$el)

 comp.remove = () => {
  document.body.removeChild(comp.$el)

  comp.$destroy()
 }

 return comp
}

方式二

import Vue from 'vue'

export function create(Component, props) {
 // 借雞生蛋new Vue({render() {}}),在render中把Component作為根組件
 const vm = new Vue({
  // h是createElement函數(shù),它可以返回虛擬dom
  render(h) {
   console.log(h(Component,{ props }));
   
   // 將Component作為根組件渲染出來
   // h(標(biāo)簽名稱或組件配置對象,傳遞屬性、事件等,孩子元素)
   return h(Component, { props })
  }
 }).$mount() // 掛載是為了把虛擬dom變成真實dom
 // 不掛載就沒有真實dom
 // 手動追加至body
 // 掛載之后$el可以訪問到真實dom
 document.body.appendChild(vm.$el)

 console.log(vm.$children);
 
 // 實例
 const comp = vm.$children[0]

 // 淘汰機(jī)制
 comp.remove = () => {
  // 刪除dom
  document.body.removeChild(vm.$el)

  // 銷毀組件
  vm.$destroy()
 }

 // 返回Component組件實例
 return comp
}

使用

A組件(要動態(tài)創(chuàng)建的組件)

<template>
 <div class="a">
  <h2>{{ title }}</h2>
  <p>{{ data }}</p>
 </div>
</template>

<script>
export default {
 props: {
  title: {
   type: String,
   default: "hello world!"
  },
  message: {
   type: String,
   default: "o(∩_∩)o 哈哈"
  },
  duration: {
   type: Number,
   default: 1000
  }
 },
 data() {
  return {
   data: "我是a組件",
  };
 },
 created() {
  let num = 1
  
  const timer = setInterval(() => {
   this.data = num++
  }, this.duration)

  this.$once("hook: beforeDestroy", () => clearInterval(timer))
 }
};
</script>

<style>
.a {
 position: fixed;
 width: 100%;
 top: 16px;
 left: 0;
 text-align: center;
 pointer-events: none;
 background-color: #fff;
 border: grey 3px solid;
 box-sizing: border-box;
}
</style>

B組件(操作動態(tài)創(chuàng)建組件的地方)

<template>
 <div class="b">
  <button @click="createA">創(chuàng)建</button>
 </div>
</template>

<script>
import A from "@/components/A.vue"
import { create } from "@/utils/create.js"
export default {

 components: {
  A,
 },
 methods: {
  createA() {
   // 創(chuàng)建A組件,并掛載到body上
   create(A, { title: "vue", message: "么么噠😙" })
  }
 },
};
</script>

以上就是vue 動態(tài)創(chuàng)建組件的兩種方法的詳細(xì)內(nèi)容,更多關(guān)于vue 動態(tài)創(chuàng)建組件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue 表情包輸入組件的實現(xiàn)代碼

    Vue 表情包輸入組件的實現(xiàn)代碼

    這篇文章主要介紹了Vue 表情包輸入組件的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • vue.js高德地圖實現(xiàn)熱點圖代碼實例

    vue.js高德地圖實現(xiàn)熱點圖代碼實例

    這篇文章主要介紹了vue.js高德地圖實現(xiàn)熱點圖,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue中使用swiper輪播圖的正確姿勢(親測有效)

    vue中使用swiper輪播圖的正確姿勢(親測有效)

    最近在用Vue制作移動端項目,碰到了輪播圖的制作,接下來就讓小編一步一步帶大家動作制作吧,下面這篇文章主要給大家介紹了關(guān)于vue中使用swiper輪播圖的正確姿勢,需要的朋友可以參考下
    2022-06-06
  • 詳解vue2與vue3獲取模版引用ref的區(qū)別

    詳解vue2與vue3獲取模版引用ref的區(qū)別

    這篇文章主要為大家詳細(xì)介紹了vue2與vue3中獲取模版引用ref的方法與區(qū)別,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • vue3中reactive和ref的實現(xiàn)與區(qū)別詳解

    vue3中reactive和ref的實現(xiàn)與區(qū)別詳解

    reactive和ref都是vue3實現(xiàn)響應(yīng)式系統(tǒng)的api,他們是如何實現(xiàn)響應(yīng)式的呢,reactive和ref又有什么區(qū)別呢,下面小編就來和大家詳細(xì)講講,希望對大家有所幫助
    2023-10-10
  • Vue中使用setTimeout問題

    Vue中使用setTimeout問題

    這篇文章主要介紹了Vue中使用setTimeout問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue $attrs和$listeners的使用與區(qū)別

    vue $attrs和$listeners的使用與區(qū)別

    本文主要介紹了vue $attrs和$listeners的使用與區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Nuxt 嵌套路由nuxt-child組件用法(父子頁面組件的傳值)

    Nuxt 嵌套路由nuxt-child組件用法(父子頁面組件的傳值)

    這篇文章主要介紹了Nuxt 嵌套路由nuxt-child組件用法(父子頁面組件的傳值),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Vue3 全局使用按鈕截流指令示例代碼

    Vue3 全局使用按鈕截流指令示例代碼

    這篇文章主要介紹了Vue3 全局使用按鈕截流指令示例代碼,Vue2與Vue3中的自定義指令實現(xiàn)方式略有不同,但實現(xiàn)的按鈕截流功能是類似的,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • vue長列表優(yōu)化之虛擬列表實現(xiàn)過程詳解

    vue長列表優(yōu)化之虛擬列表實現(xiàn)過程詳解

    前端的業(yè)務(wù)開發(fā)中會遇到不使用分頁方式來加載長列表的需求,下面這篇文章主要給大家介紹了關(guān)于vue長列表優(yōu)化之虛擬列表實現(xiàn)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08

最新評論

蕉岭县| 太仓市| 上蔡县| 萨迦县| 恭城| 顺昌县| 临清市| 宜章县| 莲花县| 洮南市| 嘉峪关市| 五台县| 宜君县| 佛坪县| 南川市| 砀山县| 景东| 梁平县| 朝阳市| 华亭县| 分宜县| 图们市| 高台县| 松阳县| 读书| 绵阳市| 海淀区| 江永县| 道真| 文登市| 思南县| 镇江市| 九龙县| 木里| 嘉善县| 安新县| 吉安市| 凤庆县| 彩票| 海安县| 孟州市|