初學(xué)render

一般情況下忧饭,在vue中扛伍,我們定義組件時(shí),都使用template(模板)來創(chuàng)建HTML词裤,但如果我們的HTML需要使用javaScript來生成的話刺洒,應(yīng)該怎么辦?

1鳖宾、render函數(shù)的使用意義

渲染節(jié)點(diǎn)

2、示例

官方文檔給我們提供了一個(gè)很好理解的例子:
我們需要?jiǎng)?chuàng)建一個(gè)這樣的組件:
<anchored-heading :level="1">Hello world!</anchored-heading>
當(dāng)level傳入1時(shí)逆航,渲染出來的html內(nèi)容就是<h1>Hello world</h1>,傳入2時(shí)因俐,渲染出來的html內(nèi)容就是<h2>Hello world</h2>……
很明顯我們想渲染的節(jié)點(diǎn)標(biāo)簽不是寫死在模板里的拇惋。
使用render來實(shí)現(xiàn)該組件:

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

render是一個(gè)渲染函數(shù),返回值是DOM節(jié)點(diǎn)抹剩。
示例代碼第三行:我們?cè)赾reateElement()這個(gè)函數(shù)里傳了兩個(gè)參數(shù)撑帖,第一個(gè)參數(shù)是節(jié)點(diǎn)名稱,跟this.level掛鉤吧兔,this.level是1磷仰,節(jié)點(diǎn)名稱就是<h1>,是2節(jié)點(diǎn)名稱就是<h2>境蔼,第二個(gè)參數(shù)是節(jié)點(diǎn)下的子節(jié)點(diǎn)灶平,$slots.defult的含義可查詢官網(wǎng)api中的實(shí)例屬性: https://vuefe.cn/v2/api/#vm-slots,它得到的是所有沒有被包含在具名slot中的節(jié)點(diǎn)箍土。由此render函數(shù)渲染出新節(jié)點(diǎn)逢享。
附createElement函數(shù)的定義:

// @returns {VNode}
createElement(
  //第一個(gè)參數(shù): {String | Object | Function}.(必填項(xiàng))
  // 一個(gè) HTML 標(biāo)簽,組件設(shè)置吴藻,或一個(gè)函數(shù)
  // 必須 Return 上述其中一個(gè)瞒爬,例如"div"
  
  // 第二個(gè)參數(shù):{Object}
  // 一個(gè)對(duì)應(yīng)屬性的數(shù)據(jù)對(duì)象.(可選項(xiàng))
  //例如,樣式屬性:{style: {color: 'red',fontSize: '20px'}}

  //第三個(gè)參數(shù): {String | Array}
  // 子節(jié)點(diǎn)(VNodes).(可選項(xiàng))
 //例如:
 // [
   // createElement('h1', 'hello world'),
   //"<p>哈哈哈</p>"
  //]
  //這里我們可以傳入數(shù)組沟堡,也可以直接傳入一段節(jié)點(diǎn)中的文本內(nèi)容(String)侧但,實(shí)際上節(jié)點(diǎn)內(nèi)的文本內(nèi)容也屬于它的子節(jié)點(diǎn)。

在render函數(shù)中我們可以直接使用原生js來實(shí)現(xiàn)v-if航罗、v-for等指令禀横。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市粥血,隨后出現(xiàn)的幾起案子柏锄,更是在濱河造成了極大的恐慌,老刑警劉巖复亏,帶你破解...
    沈念sama閱讀 212,294評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趾娃,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡缔御,警方通過查閱死者的電腦和手機(jī)抬闷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刹淌,“玉大人饶氏,你說我怎么就攤上這事讥耗。” “怎么了疹启?”我有些...
    開封第一講書人閱讀 157,790評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵古程,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我喊崖,道長(zhǎng)挣磨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,595評(píng)論 1 284
  • 正文 為了忘掉前任荤懂,我火速辦了婚禮茁裙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘节仿。我一直安慰自己晤锥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,718評(píng)論 6 386
  • 文/花漫 我一把揭開白布廊宪。 她就那樣靜靜地躺著矾瘾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箭启。 梳的紋絲不亂的頭發(fā)上壕翩,一...
    開封第一講書人閱讀 49,906評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音傅寡,去河邊找鬼放妈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛荐操,可吹牛的內(nèi)容都是我干的芜抒。 我是一名探鬼主播,決...
    沈念sama閱讀 39,053評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼托启,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼挽绩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起驾中,我...
    開封第一講書人閱讀 37,797評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎模聋,沒想到半個(gè)月后肩民,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,250評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡链方,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,570評(píng)論 2 327
  • 正文 我和宋清朗相戀三年持痰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祟蚀。...
    茶點(diǎn)故事閱讀 38,711評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡工窍,死狀恐怖割卖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情患雏,我是刑警寧澤鹏溯,帶...
    沈念sama閱讀 34,388評(píng)論 4 332
  • 正文 年R本政府宣布,位于F島的核電站淹仑,受9級(jí)特大地震影響丙挽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜匀借,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,018評(píng)論 3 316
  • 文/蒙蒙 一颜阐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吓肋,春花似錦凳怨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至屑咳,卻和暖如春萨赁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兆龙。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工杖爽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人紫皇。 一個(gè)月前我還...
    沈念sama閱讀 46,461評(píng)論 2 360
  • 正文 我出身青樓慰安,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親聪铺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子化焕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,595評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容铃剔。關(guān)于...
    云之外閱讀 5,046評(píng)論 0 29
  • 深入響應(yīng)式 追蹤變化: 把普通js對(duì)象傳給Vue實(shí)例的data選項(xiàng)撒桨,Vue將使用Object.defineProp...
    冥冥2017閱讀 4,854評(píng)論 6 16
  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南,這只是我在學(xué)習(xí)過程中的一些閱讀筆記键兜,個(gè)人覺得該教程講解深入淺出凤类,比目前大...
    leonaxiong閱讀 2,813評(píng)論 1 18
  • HTML模版 之后出現(xiàn)的React代碼嵌套入模版中。 1. Hello world 這段代碼將一個(gè)一級(jí)標(biāo)題插入到指...
    ryanho84閱讀 6,222評(píng)論 0 9
  • 2018年已經(jīng)過去兩個(gè)月了,才想起寫新年總結(jié)。 不禁感概時(shí)間過得真快夷磕。我是2017年一月10號(hào)只身到達(dá)北京的~三月...
    樹頁(yè)閱讀 164評(píng)論 0 0