Vue中render方法的使用詳解
先說(shuō)一下對(duì)官網(wǎng)上demo的個(gè)人理解:
<!DOCTYPE html>
<html>
<head>
<title>Vue的render方法說(shuō)明</title>
<script src="vue.js"></script>
</head>
<body>
<div id="app">
<child :level="1">
hello world
</child>
</div>
<script type="text/x-template" id="anchored-heading-template">
<div>
<h1 v-if="level === 1">
<slot></slot>
</h1>
<h2 v-if="level === 2">
<slot></slot>
</h2>
<h3 v-if="level === 3">
<slot></slot>
</h3>
<h4 v-if="level === 4">
<slot></slot>
</h4>
<h5 v-if="level === 5">
<slot></slot>
</h5>
<h6 v-if="level === 6">
<slot></slot>
</h6>
</div>
</script>
<script type="text/javascript">
Vue.component('child', {
template: '#anchored-heading-template',
props: {
level: {
type: Number,
required: true
}
}
});
new Vue({
el: "#app"
})
</script>
</body>
</html>
雖然使用template定義組件的方法非常的直觀,但是這樣會(huì)造成代碼過(guò)長(zhǎng)??梢允褂胷ender的方法
<!DOCTYPE html>
<html>
<head>
<title>Vue的render方法說(shuō)明</title>
<script src="vue.js"></script>
</head>
<body>
<div id="app">
<child :level="1">
hello world
</child>
</div>
<script type="text/javascript">
Vue.component('child', {
render:function (createElement) {
var body=this.$slots.default;
//this.$slots返回了一個(gè)組件分發(fā)下來(lái)的元素和內(nèi)容
//this.$slots.default返回了具名的內(nèi)容
return createElement(
'h'+this.level,
//this.level是利用v-bind注入到組件中的level
body
)
},
//因?yàn)関ue中組件父組件無(wú)法向子組件注入內(nèi)容。所以我們需要通過(guò)
//v-bind定義一個(gè)key,value向子組件注入內(nèi)容。所要接收的值也需要在定義組件時(shí)的props屬性中的定義一下
props:{
level:{
}
}
});
new Vue({
el: "#app"
})
</script>
</body>
</html>
下面是一個(gè)slot具名分發(fā)的demo:介紹了creatElement的用法:
<!DOCTYPE html>
<html>
<head>
<title>Vue的render方法說(shuō)明</title>
<script src="vue.js"></script>
</head>
<body>
<div id="app">
<child>
<p slot="header">this is header</p>
<p slot="center">this is center</p>
<p slot="footer">this is footer</p>
</child>
</div>
<script type="text/javascript">
Vue.component('child', {
render: function (createElement) {
var header=this.$slots.header;
var center=this.$slots.center;
var footer=this.$slots.footer;
//createElement第一個(gè)參數(shù)是標(biāo)簽名,第二個(gè)參數(shù)是值
return createElement('div',[
createElement('div', header),
createElement('div', center),
createElement('div', footer),
])
}
});
new Vue({
el: "#app"
})
</script>
</body>
</html>
所創(chuàng)建的組件的demo結(jié)果如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 基于vue2.0動(dòng)態(tài)組件及render詳解
- vue iview組件表格 render函數(shù)的使用方法詳解
- Vue中render函數(shù)的使用方法
- 詳解vue渲染函數(shù)render的使用
- 淺談vue的iview列表table render函數(shù)設(shè)置DOM屬性值的方法
- 如何理解Vue的render函數(shù)的具體用法
- vue Render中slots的使用的實(shí)例代碼
- 深入理解vue Render函數(shù)
- vue深入解析之render function code詳解
- 了解VUE的render函數(shù)的使用
- Vue2.x中的Render函數(shù)詳解
- Vue.js render方法使用詳解
- Vue render深入開(kāi)發(fā)講解
相關(guān)文章
vue.js的vue-cli腳手架中使用百度地圖API的實(shí)例
今天小編就為大家分享一篇關(guān)于vue.js的vue-cli腳手架中使用百度地圖API的實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01
vue-router實(shí)現(xiàn)tab標(biāo)簽頁(yè)(單頁(yè)面)詳解
這篇文章主要為大家詳細(xì)介紹了vue-router實(shí)現(xiàn)tab標(biāo)簽頁(yè)的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
vue操作動(dòng)畫(huà)的記錄animate.css實(shí)例代碼
這篇文章主要介紹了vue操作動(dòng)畫(huà)的記錄animate.css的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
Vue使用$attrs實(shí)現(xiàn)爺爺直接向?qū)O組件傳遞數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了Vue如何使用$attrs實(shí)現(xiàn)爺爺直接向?qū)O組件傳遞數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2024-02-02
如何在vue3+ts項(xiàng)目中使用query和params傳參
Vue3中的路由傳參有兩種方式:query和params,下面這篇文章主要給大家介紹了關(guān)于如何在vue3+ts項(xiàng)目中使用query和params傳參的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
VUE3中h()函數(shù)和createVNode()函數(shù)的使用解讀
這篇文章主要介紹了VUE3中h()函數(shù)和createVNode()函數(shù)的使用解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
利用Vue3和element-plus實(shí)現(xiàn)圖片上傳組件
element-plus提供了uploader組件,但是不好定制化。所以本文將利用Vue3和element-plus實(shí)現(xiàn)一個(gè)圖片上傳的組件,感興趣的可以了解一下2022-03-03

