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

Vue動(dòng)態(tài)創(chuàng)建注冊(cè)component的實(shí)例代碼

 更新時(shí)間:2019年06月14日 09:37:31   作者:DerekL  
這篇文章主要給大家介紹了關(guān)于Vue動(dòng)態(tài)創(chuàng)建注冊(cè)component的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

在深入了解Vue動(dòng)態(tài)創(chuàng)建Component前先了解一下常規(guī)組件聲明形式。

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

常規(guī)組件聲明與注冊(cè)

// 定義一個(gè)名為 button-counter 全局注冊(cè)的組件
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");

在上面的代碼中我們聲明了一個(gè)叫做 button-counter 的組件。如果在常規(guī)情況下使用的話,只需要在頁(yè)面上寫對(duì)應(yīng)的 <button-counter></button-counter> 標(biāo)簽就夠了。

全局創(chuàng)建注冊(cè)組件可以實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建,但是我們必須在 template 聲明使用該組件,而且如果把所有組件都全局注冊(cè)這并不是一個(gè)好辦法。

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

而組件實(shí)例又有 $mount 這樣一個(gè)方法,官方對(duì)于 $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.

那我們是否可以通過(guò)這種方式來(lái)達(dá)到我們的需求呢?

還不夠!

為什么???

因?yàn)?Vue.component 返回的結(jié)果是一個(gè) function!它返回的并不是 組件實(shí)例,而是一個(gè)構(gòu)造函數(shù)。

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

// 定義一個(gè)名為 button-counter 全局注冊(cè)的組件
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"); // 只能查找到全局注冊(cè)到組件
   const instance = new ButtonCounter();
   instance.$mount("#insert-container");
  }
 }
}).$mount("#app");

上述代碼中,Vue.component 先獲取到組件的構(gòu)造函數(shù),然后構(gòu)造實(shí)例,通過(guò)實(shí)例的一些方法來(lái)處理數(shù)據(jù)和掛載節(jié)點(diǎn)。

但是我們發(fā)現(xiàn) Vue.component 只負(fù)責(zé)全局注冊(cè)或查找。

如果想要針對(duì)局部注冊(cè)的組件使用動(dòng)態(tài)創(chuàng)建并添加我們需要使用 Vue.extend 基礎(chǔ)Vue構(gòu)造器創(chuàng)建"子類"達(dá)到目的。

其實(shí) Vue.component 方法傳入的選項(xiàng)是一個(gè)對(duì)象時(shí),Vue自動(dòng)調(diào)用 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");

單文件應(yīng)用

在實(shí)際使用場(chǎng)景里,大部分都是用腳手架構(gòu)建到項(xiàng)目,使用 *.vue 這種單文件方式注冊(cè)組件。

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

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

總結(jié)

至此,我們知道了,全局組件動(dòng)態(tài)注冊(cè) 和 局部組件動(dòng)態(tài)注冊(cè) 的使用方法和注意事項(xiàng),我們可以結(jié)合實(shí)際情況去選擇不同方案進(jìn)行搭配即可。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Vue 瑩石攝像頭直播視頻實(shí)例代碼

    Vue 瑩石攝像頭直播視頻實(shí)例代碼

    本文通過(guò)實(shí)例代碼給大家介紹了vue 瑩石攝像頭直播視頻功能,文章還給大家提到了vue h5項(xiàng)目調(diào)用手機(jī)攝像頭錄像并上傳的功能,需要的朋友可以參考下
    2018-08-08
  • Vue實(shí)現(xiàn)動(dòng)態(tài)查詢規(guī)則生成組件

    Vue實(shí)現(xiàn)動(dòng)態(tài)查詢規(guī)則生成組件

    今天我們來(lái)給大家介紹下在Vue開(kāi)發(fā)中我們經(jīng)常會(huì)碰到的一種需求場(chǎng)景,本文主要介紹了Vue動(dòng)態(tài)查詢規(guī)則生成組件,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • unplugin-vue-components解決命名沖突問(wèn)題

    unplugin-vue-components解決命名沖突問(wèn)題

    這篇文章主要介紹了unplugin-vue-components解決命名沖突問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 詳解Vue內(nèi)部怎樣處理props選項(xiàng)的多種寫法

    詳解Vue內(nèi)部怎樣處理props選項(xiàng)的多種寫法

    這篇文章主要介紹了詳解Vue內(nèi)部怎樣處理props選項(xiàng)的多種寫法,詳細(xì)的介紹了props的使用的寫法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • vue設(shè)置默認(rèn)首頁(yè)的操作

    vue設(shè)置默認(rèn)首頁(yè)的操作

    這篇文章主要介紹了vue設(shè)置默認(rèn)首頁(yè)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • vue+iview寫個(gè)彈框的示例代碼

    vue+iview寫個(gè)彈框的示例代碼

    本篇文章主要介紹了vue+iview寫個(gè)彈框的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 解決Vue項(xiàng)目中tff報(bào)錯(cuò)的問(wèn)題

    解決Vue項(xiàng)目中tff報(bào)錯(cuò)的問(wèn)題

    這篇文章主要介紹了解決Vue項(xiàng)目中tff報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • 如何將百度地圖包裝成Vue的組件的方法步驟

    如何將百度地圖包裝成Vue的組件的方法步驟

    這篇文章主要介紹了如何將百度地圖包裝成Vue的組件的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • 詳解使用VueJS開(kāi)發(fā)項(xiàng)目中的兼容問(wèn)題

    詳解使用VueJS開(kāi)發(fā)項(xiàng)目中的兼容問(wèn)題

    這篇文章主要介紹了詳解使用VueJS開(kāi)發(fā)項(xiàng)目中的兼容問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • 詳解vue中多個(gè)有順序要求的異步操作處理

    詳解vue中多個(gè)有順序要求的異步操作處理

    這篇文章主要介紹了vue中多個(gè)有順序要求的異步操作處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評(píng)論