VUE中的render函式

2021-09-25 09:14:58 字數 1054 閱讀 1081

vue通過 template 來建立你的 html。但是,在特殊情況下,這種寫死的模式無法滿足需求,必須需要js的程式設計能力。此時,需要用render來建立html。

render方法的實質就是生成template模板;

通過呼叫乙個方法來生成,而這個方法是通過render方法的引數傳遞給他的;

通過這三個引數,可以生成乙個完整的模板

官網例項

//未使用render函式

vue.component('anchored-heading',

}})//使用render函式

vue.component('anchored-heading', ,

props:

}})

區別:

createelement方法,通過render函式的引數傳遞進來,有三個引數

什麼情況下適合使用render函式

在一次封裝一套通用按鈕元件的工作中,按鈕有四個樣式(success、error、warning、default)。首先,你可能會想到如下實現

}}}

這樣寫在按鈕樣式少的時候完全沒有問題,但是試想,如果需要的按鈕樣式有十多個。那麼template寫死的方式就顯得很無力了。遇上類似這樣的情況,使用render函式可以說最優選擇了。

首先render函式生成的內容相當於template的內容,故使用render函式時,在.vue檔案中需要先把template標籤去掉。只保留邏輯層。

export default ,

text:

}, computed:

} },

render(h) ,

domprops: ,

on:

});}, methods:

}};

是的,要記住每個引數的型別同用法,按序傳參實在是太麻煩了。那麼其實可以用jsx來優化這個繁瑣的過程。

render() 

);},

Vue提高16 render函式

在某些場景下你可能需要render渲染函式帶來的完全程式設計能力來解決不太容易解決的問題,特別是要動態選擇生成標籤和元件型別的場景。根據props來生成標籤的場景 其中level是data中的變數,可以看到這裡有大量重複 如果邏輯複雜點,加上一些繫結和判斷就更複雜了,這裡可以利用render函式來對...

Vue之Render函式高階篇

一 v if v else 利用if else代替 二 v for 必須用map 三 v model 父子元件相互傳值 四 修飾符 1 vue自帶修飾符 修飾符字首 作用.once 事件只執行一次 capture 給元素新增乙個 當元素發生冒泡時,先觸發帶有該修飾符的元素。若有多個該修飾符,則由外而...

Vue原始碼之render函式(四)

在 mount函式中,最後呼叫的updatecomponent函式,該函式中的呼叫了例項的私有函式vm.render,因此,現在需要弄清楚vm.render函式完成了什麼功能。在 src core instance render.js 中,在vue的原型上定義了私有 render函式。1.首先從vm...