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

VUE render函數(shù)使用和詳解

 更新時(shí)間:2021年12月06日 15:58:38   作者:貳伍丶  
這篇文章主要為大家介紹了VUE render函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

前言

在平時(shí)編程時(shí),大部分是通過template來創(chuàng)建html。但是在一些特殊的情況下,使用template方式時(shí),就無法很好的滿足需求,在這個時(shí)候就需要 通過JavaScript 的編程能力來進(jìn)行操作。此時(shí),就到了render函數(shù)展示拳腳去時(shí)候了。

render的作用

官網(wǎng)示例入口

在官網(wǎng)的這里示例中,使用組件,將相同的內(nèi)容通過solt放進(jìn)h1-h6的標(biāo)簽中,在使用傳統(tǒng)方式時(shí),代碼不僅冗長,而且在每一個級別的標(biāo)題中重復(fù)書寫了?<slot></slot>,在要插入錨點(diǎn)元素時(shí)還要再次重復(fù)。而使用render函數(shù)后,代碼就精簡了很多。

Vue.component('anchored-heading', {
  render: function (createElement) {
    return createElement(
      'h' + this.level,   // 標(biāo)簽名稱
      this.$slots.default // 子節(jié)點(diǎn)數(shù)組
    )
  },
  props: {
    level: {
      type: Number,
      required: true
    }
  }
})

render函數(shù)的作用是,當(dāng)場景中用 template 實(shí)現(xiàn)起來代碼冗長繁瑣而且有大量重復(fù),這個時(shí)候使用就可以極大的簡化代碼。

render函數(shù)講解

在使用render函數(shù)中,會使用到一個參數(shù)createElement,而這個createElement參數(shù),本質(zhì)上,也是一個函數(shù),是vue中構(gòu)建虛擬dom所使用的工具。下面就圍繞著這個createElement來看一下。

在createelement方法,有三個參數(shù):

return createEement(, {}, [])

1.第一個參數(shù)(必要參數(shù)):主要是用于提供dom中的html內(nèi)容,類型可以是字符串、對象或函數(shù)。

2.第二個參數(shù)(對象類型,可選):用于設(shè)置這個dom中的一些樣式、屬性、傳的組件的參數(shù)、綁定事件之類的。

3.第三個參數(shù)(類型是數(shù)組,數(shù)組元素類型是VNode,可選):主要用于設(shè)置分發(fā)的內(nèi)容,如新增的其他組件。

注意:組件樹中的所有vnode必須是唯一的

通過傳入createElement參數(shù),創(chuàng)建虛擬節(jié)點(diǎn),然后再將節(jié)點(diǎn)返回給render返回出去。

總的來說,render函數(shù)的本質(zhì)就是創(chuàng)建一個虛擬節(jié)點(diǎn)。

render和template的區(qū)別

相同之處:

render 函數(shù)?跟?template?一樣都是創(chuàng)建 html 模板

不同之處:

  • Template適合邏輯簡單,render適合復(fù)雜邏輯。
  • 使用者template理解起來相對容易,但靈活性不足;自定義render函數(shù)靈活性高,但對使用者要求較高。
  • render的性能較高,template性能較低。
  • 使用render函數(shù)渲染沒有編譯過程,相當(dāng)于使用者直接將代碼給程序。所以,使用它對使用者要求高,且易出現(xiàn)錯誤
  • Render 函數(shù)的優(yōu)先級要比template的級別要高,但是要注意的是Mustache(雙花括號)語法就不能再次使用

注意:template和render不能一起使用,否則無效

render舉例

如一次封裝一套通用按鈕組件,按鈕有四個樣式(success、error、warning、default)。

template方式是如下:

 <div class="btn btn-success" v-if="type === 'success'">{{ text }}</div>
 <div class="btn btn-danger" v-else-if="type === 'danger'">{{ text }}</div>
 <div class="btn btn-warning" v-else-if="type === 'warning'">{{ text }}</div>

這樣寫在按鈕少的時(shí)候沒有問題,但是一旦按鈕數(shù)量變多,這樣寫就會顯得特別冗長,在這個時(shí)候,就需要render函數(shù)。

根據(jù)情況生成按鈕DOM

在使用render函數(shù)前,需要先把template標(biāo)簽去掉,只保留邏輯層。

通過傳入的type動態(tài)填入class,通過inderText將內(nèi)容添加入DOM中。

render(h) {
  return h('div', {
   class: {
    btn: true,
    'btn-success': this.type === 'success',
    'btn-danger': this.type === 'danger',
    'btn-warning': this.type === 'warning'
   },
   domProps: {
    innerText: this.text
   },
   on: {
    click: this.handleClick
   }
  });
 },

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Vue過濾器與內(nèi)置指令和自定義指令及組件使用詳解

    Vue過濾器與內(nèi)置指令和自定義指令及組件使用詳解

    這篇文章主要介紹了Vue過濾器與內(nèi)置指令和自定義指令及組件使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • 最適應(yīng)的vue.js的form提交涉及多種插件【推薦】

    最適應(yīng)的vue.js的form提交涉及多種插件【推薦】

    這篇文章主要介紹了最適應(yīng)的vue.js的form提交涉及多種插件,涉及到 vue.js動態(tài)添加css樣式 ,tab切換 ,touch,表單提交,驗(yàn)證,toast,數(shù)據(jù)雙向綁定等。需要的朋友可以參考下
    2018-08-08
  • ant desing vue table 實(shí)現(xiàn)可伸縮列的完整例子

    ant desing vue table 實(shí)現(xiàn)可伸縮列的完整例子

    最近在使用ant-design-vue做表格時(shí),遇到要做一個可伸縮列表格的需求,在網(wǎng)上一直沒有找到好的方法,于是小編動手自己寫個可以此功能,下面小編把a(bǔ)nt desing vue table 可伸縮列的實(shí)現(xiàn)代碼分享到腳本之家平臺供大家參考
    2021-05-05
  • vue響應(yīng)式原理與雙向數(shù)據(jù)的深入解析

    vue響應(yīng)式原理與雙向數(shù)據(jù)的深入解析

    Vue 最獨(dú)特的特性之一,是其非侵入性的響應(yīng)式系統(tǒng)。下面這篇文章主要給大家介紹了關(guān)于vue響應(yīng)式原理與雙向數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • vue2.0 根據(jù)狀態(tài)值進(jìn)行樣式的改變展示方法

    vue2.0 根據(jù)狀態(tài)值進(jìn)行樣式的改變展示方法

    下面小編就為大家分享一篇vue2.0 根據(jù)狀態(tài)值進(jìn)行樣式的改變展示方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue如何在用戶要關(guān)閉當(dāng)前網(wǎng)頁時(shí)彈出提示的實(shí)現(xiàn)

    vue如何在用戶要關(guān)閉當(dāng)前網(wǎng)頁時(shí)彈出提示的實(shí)現(xiàn)

    這篇文章主要介紹了vue如何在用戶要關(guān)閉當(dāng)前網(wǎng)頁時(shí)彈出提示的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • vue3腳手架簡單靜態(tài)路由解讀

    vue3腳手架簡單靜態(tài)路由解讀

    這篇文章主要介紹了vue3腳手架簡單靜態(tài)路由,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 安裝vue-cli的簡易過程

    安裝vue-cli的簡易過程

    安裝vue-cli的前提是你已經(jīng)安裝了npm,安裝npm你可以直接下載node的安裝包進(jìn)行安裝。接下來通過本文給大家介紹安裝vue-cli的簡易過程,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • vue項(xiàng)目中js-cookie的使用存儲token操作

    vue項(xiàng)目中js-cookie的使用存儲token操作

    這篇文章主要介紹了vue項(xiàng)目中js-cookie的使用存儲token操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue Tab切換以及緩存頁面處理的幾種方式

    vue Tab切換以及緩存頁面處理的幾種方式

    相信tab切換對于大家來說都不算陌生,后臺管理系統(tǒng)中多會用到。如果不知道的話,可以看一下瀏覽器上方的標(biāo)簽頁切換,大概效果就是這樣。
    2021-05-05

最新評論

包头市| 荥阳市| 明水县| 加查县| 文化| 临沧市| 绥滨县| 平顶山市| 贵阳市| 大同市| 龙江县| 平度市| 瑞金市| 曲松县| 洞口县| 南和县| 郯城县| 兴海县| 新余市| 徐汇区| 庄河市| 岫岩| 抚宁县| 津南区| 夏河县| 宾川县| 新泰市| 仪陇县| 河北区| 咸宁市| 淮阳县| 上蔡县| 杭锦旗| 错那县| 乐清市| 丰城市| 高尔夫| 托克逊县| 那曲县| 泸水县| 农安县|