亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Vue動態創建注冊component的實例代碼

2019-11-19 11:20:53
字體:
來源:轉載
供稿:網友

前言

在深入了解Vue動態創建Component前先了解一下常規組件聲明形式。

Vue 的組件通??梢酝ㄟ^兩種方式來聲明,一種是通過 Vue.component,另外一種則是 Single File Components(SFC) 單文件組件 。

常規組件聲明與注冊

// 定義一個名為 button-counter 全局注冊的組件Vue.component("button-counter", { template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>', data() {  return {   count: 0  } }});new Vue({ template: `  <div id="app">   <h1>App Component</h1>   <button-counter></button-counter>  </div> `}).$mount("#app");

在上面的代碼中我們聲明了一個叫做 button-counter 的組件。如果在常規情況下使用的話,只需要在頁面上寫對應的 <button-counter></button-counter> 標簽就夠了。

全局創建注冊組件可以實現動態創建,但是我們必須在 template 聲明使用該組件,而且如果把所有組件都全局注冊這并不是一個好辦法。

官方文檔中我們可以看到,我們可以通過 Vue.component('component-name') 的方式來注冊一個組件。

而組件實例又有 $mount 這樣一個方法,官方對于 $mount 的解釋如下:

vm.$mount( [elementOrSelector] )
Arguments:
{Element | string} [elementOrSelector]
{boolean} [hydrating]
Returns: vm - the instance itself
Usage:
If a Vue instance didn't receive the el option at instantiation, it will be in “unmounted” state, without an associated DOM element. vm.$mount() can be used to manually start the mounting of an unmounted Vue instance.
If elementOrSelector argument is not provided, the template will be rendered as an off-document element, and you will have to use native DOM API to insert it into the document yourself.
The method returns the instance itself so you can chain other instance methods after it.

那我們是否可以通過這種方式來達到我們的需求呢?

還不夠!

為什么???

因為 Vue.component 返回的結果是一個 function!它返回的并不是 組件實例,而是一個構造函數。

那到這里其實我們就清楚了。 對于 Vue.component 聲明的組件,我們先通過 Vue.component 獲取它的構造函數,再 new 出一個組件實例,最后 通過 $mount 掛載到 html 上。

// 定義一個名為 button-counter 全局注冊的組件Vue.component("button-counter", { template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>', data() {  return {   count: 0  } }});new Vue({ template: `  <div id="app">   <h1>App Component</h1>   <button @click="insert">click to insert button-counter comonent</button>   <div id="insert-container"></div>  </div> `, methods: {  insert() {   const ButtonCounter = Vue.component("button-counter"); // 只能查找到全局注冊到組件   const instance = new ButtonCounter();   instance.$mount("#insert-container");  } }}).$mount("#app");

上述代碼中,Vue.component 先獲取到組件的構造函數,然后構造實例,通過實例的一些方法來處理數據和掛載節點。

但是我們發現 Vue.component 只負責全局注冊或查找。

如果想要針對局部注冊的組件使用動態創建并添加我們需要使用 Vue.extend 基礎Vue構造器創建"子類"達到目的。

其實 Vue.component 方法傳入的選項是一個對象時,Vue自動調用 Vue.extend。

完整代碼示例:

const ButtonCounterComponent = { template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>', data() {  return {   count: 0  } }};new Vue({ template: `  <div id="app">   <h1>App Component</h1>   <button @click="insert">click to insert button-counter comonent</button>   <div id="insert-container"></div>  </div> `, methods: {  insert() {   const ButtonCounter = Vue.extend(ButtonCounterComponent);   const instance = new ButtonCounter();   instance.$mount("#insert-container");  } }}).$mount("#app");

單文件應用

在實際使用場景里,大部分都是用腳手架構建到項目,使用 *.vue 這種單文件方式注冊組件。

<template></template><script>export default { data() {  return {   msg: "hello"  } }, created() {}, mounted() {}, destroy() {}};</script><style scoped></style>

import *.vue 返回的就是模版中 script 中 export 部分。

總結

至此,我們知道了,全局組件動態注冊 和 局部組件動態注冊 的使用方法和注意事項,我們可以結合實際情況去選擇不同方案進行搭配即可。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲性视频网站| 亚洲精品日韩丝袜精品| 国产精品电影在线观看| 欧美激情xxxx性bbbb| 欧美激情精品久久久久久黑人| 亚洲乱码av中文一区二区| 亚洲综合社区网| 国产精品久久久久高潮| 亚洲国产精品大全| 国产成人自拍视频在线观看| 亚洲第一页自拍| 成人免费在线网址| 91精品视频在线免费观看| 伊人久久久久久久久久久| 正在播放国产一区| 欧美日韩国产限制| 国产精品久久一| 九九热最新视频//这里只有精品| 日韩精品高清在线观看| 国内外成人免费激情在线视频| 日韩视频免费观看| 社区色欧美激情 | 亚洲一区久久久| 亚洲国产欧美日韩精品| 国产亚洲精品久久久优势| 国产精品人成电影在线观看| 在线观看久久av| 成人精品网站在线观看| 亚洲影院色在线观看免费| 97av在线视频| 欧美精品一区三区| 国产精品视频白浆免费视频| 亚洲日本欧美日韩高观看| 国产色婷婷国产综合在线理论片a| 影音先锋欧美精品| 亚洲最大中文字幕| 国产香蕉精品视频一区二区三区| 亚洲小视频在线| 国内精品小视频在线观看| 成人免费网视频| 国产精品海角社区在线观看| 色伦专区97中文字幕| 亚洲国产另类 国产精品国产免费| 欧美精品xxx| 成人一区二区电影| 国产一区二区三区在线视频| 国产精品久久久久久久久久尿| 亚洲第一页中文字幕| 国产+成+人+亚洲欧洲| 国产美女精品视频| 久久伊人精品一区二区三区| 日韩在线观看免费全集电视剧网站| 欧美精品久久久久久久| 日韩不卡中文字幕| 国内精品久久久久影院优| 色多多国产成人永久免费网站| 国产精品一区二区三区在线播放| 亚洲一二在线观看| 国产一区二区三区网站| 国产视频精品一区二区三区| 国产91精品青草社区| 日韩av片永久免费网站| 永久免费精品影视网站| 欧美电影在线观看高清| 国产精品久久久久久五月尺| 国产网站欧美日韩免费精品在线观看| 亚洲欧洲日本专区| 国产一区欧美二区三区| 久久免费在线观看| 亚洲已满18点击进入在线看片| 国产亚洲视频在线观看| 亚洲视频专区在线| 国产日韩在线播放| 亚洲开心激情网| 欧美大尺度在线观看| 伦理中文字幕亚洲| 欧美激情videos| 亚洲精品自在久久| 91av在线网站| 国产精品美腿一区在线看| 国产精品手机播放| 亚洲aa中文字幕| 午夜精品视频在线| 欧美猛交免费看| 中文字幕精品www乱入免费视频| 伊人成人开心激情综合网| 欧美中文在线免费| 欧美日韩高清在线观看| 97高清免费视频| www.日韩视频| 久久影视免费观看| 国产精品久久久久久久久久免费| 亚洲va欧美va国产综合久久| 51久久精品夜色国产麻豆| 91精品国产综合久久男男| 日韩精品在线免费| 日韩电影网在线| 成人午夜小视频| 国产欧美日韩中文字幕| 国产成人综合一区二区三区| 亚洲第一福利网站| 中文字幕亚洲综合久久筱田步美| 久久免费视频观看| 成人国产精品色哟哟| 性欧美暴力猛交69hd| 欧洲精品在线视频| 亚洲性猛交xxxxwww| 亚洲91av视频| 亚洲专区国产精品| 中文字幕在线观看亚洲| 亚洲综合最新在线| 欧美视频在线观看免费网址| 亚洲人成人99网站| 国产精品久久久久久久久久尿| 国产不卡在线观看| 久久久欧美精品| 亚洲最大在线视频| 精品久久在线播放| 91综合免费在线| 国产精品视频最多的网站| 最新69国产成人精品视频免费| 日韩美女写真福利在线观看| 欧美日韩亚洲成人| 欧美大荫蒂xxx| 日韩免费在线观看视频| 在线看福利67194| 日韩风俗一区 二区| 日韩av电影免费观看高清| 亚洲片国产一区一级在线观看| 久久国产精彩视频| 欧美日本黄视频| 欧美一级电影在线| 欧美精品激情在线观看| 亚洲一区二区三区xxx视频| 日韩经典中文字幕在线观看| 亚洲国产精品va在线看黑人| 国产精品久久久久久婷婷天堂| 97久久国产精品| 亚洲欧美日韩国产中文| 日韩理论片久久| 性金发美女69hd大尺寸| 在线播放精品一区二区三区| 亚洲色图色老头| 成人黄色在线播放| 亚洲成人黄色在线观看| 国产va免费精品高清在线观看| 亚洲第一网站男人都懂| 成人激情视频在线观看| 国产精品久久久久99| 久久精品国产精品| 性色av一区二区三区红粉影视| 亚洲无av在线中文字幕| 亚洲国内高清视频| 亚洲午夜av电影| 在线日韩日本国产亚洲| 国产精品av电影| 在线电影中文日韩| 国产91精品网站| 欧美在线观看www| 黑人巨大精品欧美一区二区免费| 日韩av一区二区在线| 黑丝美女久久久| 国产91精品久久久| 欧美激情国内偷拍|