成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Vue組件定義

imtianx / 1640人閱讀

摘要:組件結(jié)構(gòu)基礎(chǔ)知識屬性屬性維護一個組件內(nèi)部狀態(tài),其余組件正常情況下不可見。方案選擇單文件一行的簡單結(jié)構(gòu)常規(guī)的選擇前邊兩種方案解決不了時候的選擇靈活性高注意不論選擇哪一種方案,定義模板時,一定要有一個非標簽元素作根,有且僅有一個。

簡介

組件是可復(fù)用的 Vue 實例。

本質(zhì)上是一個對象,該對象包含data、computedwatch、methods、filters以及生命周期鉤子等成員屬性。

組件結(jié)構(gòu):

{
  data(){
    return {
      //
    }
  },
  computed:{
    displayName(){
      return "";
    }
  },
  methods:{
    onClickHandler(params){
      // do something
    }
  }
}
基礎(chǔ)知識 data屬性

data屬性維護一個組件內(nèi)部狀態(tài),其余組件正常情況下不可見。

可以通過props傳遞給子組件;

可以通過$emit的方式傳遞給父組件;

可以通過this.$refs.ref.$datamounted生命周期內(nèi)獲取子組件的內(nèi)部狀態(tài);

目前不知道如何監(jiān)聽其變化;

因為計算屬性computed和偵聽屬性watch只能監(jiān)聽 響應(yīng)式依賴 的變化,而$refs非響應(yīng)式。

一個組件的 data 選項必須是一個函數(shù)。

  data選項有兩種定義方式:
  
  一、對象形式:
  
  ```
  data:{
    //引用該組件的地方,共用一個狀態(tài)的引用,以至于,只要有一處修改了$data中的某一屬性值,其它引用該組件的地方也跟隨著改變該屬性值(其實,不是跟隨,本來就是同一個指向)。
  }
  ```
  
  二、函數(shù)形式:
  
  ```
  data(){
    return {
      //引用該組件的地方,每一個組件都會獲得獨立的引用,互不干擾。
    }
  }
  ```

computed屬性 VS methods屬性 VS filter
區(qū)別 method computed filter
類型 函數(shù) 數(shù)據(jù)變量 函數(shù)
用途 作事件處理函數(shù) 作數(shù)據(jù) 作管道符
作用范圍 組建內(nèi) 組建內(nèi) 組建內(nèi)(局部注冊)、全局(全局注冊)
參數(shù) 可以帶參 不帶參(非函) 帶參
返回值 不要求 必須有 必須有
觸發(fā) 交互時觸發(fā) 在它的相關(guān)依賴發(fā)生改變時才會重新求值 傳入的數(shù)據(jù)變化時執(zhí)行

注意:

Vue中并不是所有的屬性都是響應(yīng)式的,如$refs無法監(jiān)聽它的變動;

組件構(gòu)建的主要區(qū)別在于模板的生成方式。

模板定義方式 template選項 字符串模板

以HTML標簽結(jié)構(gòu)組成的字符串;

示例:

{
  template: "

簡單示例

", props: { level: { type: Number, required: true } } }
id選擇器指定的模板

id標識的一段script標簽包裹的HTML片段;

示例:


{
  template: "#anchored-heading-template",
  props: {
    level: {
      type: Number,
      required: true
    }
  }
}
render

發(fā)揮JavaScript最大的編程能力,該函數(shù)接收一個createElement方法作為第一個參數(shù)用來創(chuàng)建VNode;

createElement接收三個參數(shù):組件根節(jié)點類型、組件配置對象、子節(jié)點(官方關(guān)于組件配置對象的說明);

示例:

{
  render: function (createElement) {
    return createElement(
      "h" + this.level,   // tag name 標簽名稱
      this.$slots.default // 子組件中的陣列
    )
  },
  props: {
    level: {
      type: Number,
      required: true
    }
  }
}
單文件組件

單文件組件將模板、邏輯、樣式在結(jié)構(gòu)上分離,保存在同一個文件中。



方案選擇
template 單文件 render
一行的簡單結(jié)構(gòu) 常規(guī)的選擇 前邊兩種方案解決不了時候的選擇(靈活性高)

注意:

不論選擇哪一種方案,定義模板時,一定要有一個非template標簽元素作根DOM,有且僅有一個。

組件注冊方式 局部注冊

以上幾種方案定義的組件本質(zhì)上都是一個對象,獲取該對象(假設(shè)變量名為TabBar),要求只在另一個組件(假設(shè)變量名為App)內(nèi)使用:

App組件的配置對象:

{
  components:{
    "tab-bar": TabBar,
  }
}

這樣就是局部注冊,該組件TabBar只能在App模板中使用,其它組件對TabBar不可見。

全局注冊

以上幾種方案定義的組件本質(zhì)上都是一個對象,獲取該對象(假設(shè)變量名為TabBar),要求項目內(nèi)任何組件可使用:

一般在項目的入口文件(如:腳手架搭建項目的main.js)中:

Vue.component("tab-bar",TabBar);

這樣就是全局注冊,該組件TabBar能在整個項目內(nèi)使用,所有組件對TabBar可見。

生命周期鉤子

以下用自己的語言將生命周期鉤子表述一下,如果有不對的地方,請校正:

beforeCreate

在這個時候,生命周期函數(shù)已經(jīng)準備好。

組件實例已經(jīng)構(gòu)建,但本組件實例的數(shù)據(jù)、方法還沒有注入;

可以在各個生命周期內(nèi)通過組件實例this調(diào)用根實例上注入的$router、$store等對象。

可以在本生命周期內(nèi)進行數(shù)據(jù)初始化;

created

在這個時候,當前組件實例this上的屬性($data、props$methods...)已經(jīng)注入綁定,可以調(diào)用本實例上的成員屬性;

beforeMount

在進入本生命周期之前,會進行以下判斷:

是否有el選項(指定掛載目標):

el選項的是根實例;

沒有el選項的是非根實例(默認掛載元素為組件調(diào)用的位置);

是否有template選項:

template選項的是內(nèi)聯(lián)模板;

沒有template選項的是單文件組件;

個人覺得,還有render選項的判斷;

最終這些模板都會轉(zhuǎn)換為render函數(shù)進行渲染?。?!

這個生命周期在解析模板,不知道有什么實際用途。

mounted

在本生命周期之前,已經(jīng)將模板渲染為真實DOM,其中vm.$el組件實例的根DOM元素;

本生命周期是初始化第三方插件的場所;

必要時候,可以在本生命周期內(nèi)對DOM進行操作;

本生命周期是獲取this.$refs.ref的場所;

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/96589.html

相關(guān)文章

  • vue總結(jié)系列--組件

    摘要:觸發(fā)事件可以攜帶數(shù)據(jù),這些數(shù)據(jù)被用于傳遞給綁定了事件的其它組件的回調(diào)函數(shù)上,進而被傳遞給其它組件。父組件可以在回調(diào)函數(shù)里做任何事情,頗有靈活性。一般情況下,父組件會在回調(diào)函數(shù)中更新自己的狀態(tài)數(shù)據(jù)。 上一篇博文梳理了vue的數(shù)據(jù)驅(qū)動和響應(yīng)式相關(guān)的特性,這一篇博文就來梳理vue的一個很重要的特性,組件化。自定義組件之于vue,其意義不亞于函數(shù)之于C,java之類的編程語言。函數(shù)是計算機科學...

    cuieney 評論0 收藏0
  • vue學習筆記3

    摘要:主要當作屬性來使用方法表示一個具體的操作,主要書寫業(yè)務(wù)邏輯一個對象,鍵是需要觀察的表達式,值是對應(yīng)回調(diào)函數(shù)。Vue.js - Day3 定義Vue組件 什么是組件: 組件的出現(xiàn),就是為了拆分Vue實例的代碼量的,能夠讓我們以不同的組件,來劃分不同的功能模塊,將來我們需要什么樣的功能,就可以去調(diào)用對應(yīng)的組件即可; 組件化和模塊化的不同: 模塊化: 是從代碼邏輯的角度進行劃分的;方便代碼分層開...

    番茄西紅柿 評論0 收藏0
  • vue組件

    摘要:構(gòu)造器有一個選項對象,選項對象的屬性用于定義組件要渲染的。使用注冊組件時,需要提供個參數(shù),第個參數(shù)時組件的標簽,第個參數(shù)是組件構(gòu)造器。方法內(nèi)部會調(diào)用組件構(gòu)造器,創(chuàng)建一個組件實例。 什么叫組件: 有結(jié)構(gòu)HTML 有樣式CSS 有交互(效果) 行為 信號量存數(shù)據(jù) 組件的行為可以定制? 通過屬性設(shè)置 在Vue中有什么樣的組件(組件進行分類): 實現(xiàn)基本功能的基礎(chǔ)的組件(最小的元素) 可復(fù)...

    tianlai 評論0 收藏0
  • Vue-組件詳解

    摘要:除了監(jiān)聽事件外,還可以用于組件之間的自定義事件。它僅僅作為一個直接訪問子組件的應(yīng)急方案,應(yīng)當避免在模板或計算屬性中使用。將和合并成,會自動去判斷是普通標簽還是組件。子組件這里的狀態(tài)綁定的是父組件的數(shù)據(jù)。 查看原文站點,更多擴展內(nèi)容及更佳閱讀體驗! 組件詳解 組件與復(fù)用 Vue組件需要注冊后才可以使用。注冊有全局注冊和局部注冊兩種方式。 全局注冊 Vue.component(my-com...

    dadong 評論0 收藏0
  • Vue.js-組件詳解

    摘要:事件總線事件總線首先創(chuàng)建了一個名為的空的實例然后全局定義了組件最后創(chuàng)建了實例。在父組件模板中,子組件標簽上使用指定一個名稱,并在父組件內(nèi)通過來訪問指定名稱的子組件。 學習筆記:組件詳解 組件詳解 組件與復(fù)用 Vue組件需要注冊后才可以使用。注冊有全局注冊和局部注冊兩種方式。 全局注冊 Vue.component(my-component, {}); 要在父實例中使用這個組件,必須要...

    jeffrey_up 評論0 收藏0
  • 認識Vue組件

    摘要:認識組件組件是強大的功能之一。注意,所有的組件同時也都是的實例,可接受相同的選項對象。組件全局注冊時通過方式注冊。考慮到會出現(xiàn)禁止使用的場景,需要禁止和啟用組件的功能,所以需要。同樣也是先在子組件的選項中定義好傳遞過來的數(shù)據(jù)。 前言 Vue.js是一套構(gòu)建用戶界面的漸進式框架(官方說明)。通俗點來說,Vue.js是一個輕量級的,易上手易使用的,便捷,靈活性強的前端MVVM框架。簡潔的A...

    xumenger 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<