React.js 小書 Lesson8 - 組件的組合、嵌套和組件樹


React.js 小書 Lesson8 - 組件的組合培己、嵌套和組件樹

本文作者:胡子大哈
本文原文:http://huziketang.com/books/react/lesson8

轉載請注明出處炕横,保留原文鏈接以及作者信息

在線閱讀:http://huziketang.com/books/react


繼續(xù)拓展前面的例子,現(xiàn)在我們已經(jīng)有了 Header 組件了老厌。假設我們現(xiàn)在構建一個新的組件叫 Title瘟则,它專門負責顯示標題。你可以在 Header 里面使用 Title組件:

class Title extends Component {
  render () {
    return (
      <h1>React 小書</h1>
    )
  }
}

class Header extends Component {
  render () {
    return (
      <div>
        <Title />
      </div>
    )
  }
}

我們可以直接在 Header 標簽里面直接使用 Title 標簽枝秤。就像是一個普通的標簽一樣壹粟。React.js 會在 <Title /> 所在的地方把 Title 組件的 render 方法表示的 JSX 內(nèi)容渲染出來,也就是說 <h1>React 小書</h1> 會顯示在相應的位置上宿百。如果現(xiàn)在我們在 Header 里面使用三個 <Title /> ,那么就會有三個 <h1 /> 顯示在頁面上洪添。

<div>
  <Title />
  <Title />
  <Title />
</div>

這樣可復用性非常強垦页,我們可以把組件的內(nèi)容封裝好,然后靈活在使用在任何組件內(nèi)干奢。另外這里要注意的是痊焊,自定義的組件都必須要用大寫字母開頭,普通的 HTML 標簽都用小寫字母開頭忿峻。

現(xiàn)在讓組件多起來薄啥。我們來構建額外的組件來構建頁面,假設頁面是由 Header 逛尚、Main 垄惧、Footer 幾個部分組成,由一個 Index 把它們組合起來绰寞。

import React, { Component } from 'react';
import ReactDOM from 'react-dom';

class Title extends Component {
  render () {
    return (
      <h1>React 小書</h1>
    )
  }
}

class Header extends Component {
  render () {
    return (
    <div>
      <Title />
      <h2>This is Header</h2>
    </div>
    )
  }
}

class Main extends Component {
  render () {
    return (
    <div>
      <h2>This is main content</h2>
    </div>
    )
  }
}

class Footer extends Component {
  render () {
    return (
    <div>
      <h2>This is footer</h2>
    </div>
    )
  }
}

class Index extends Component {
  render () {
    return (
      <div>
        <Header />
        <Main />
        <Footer />
      </div>
    )
  }
}

ReactDOM.render(
  <Index />,
  document.getElementById('root')
)

最后頁面會顯示內(nèi)容:

[圖片上傳失敗...(image-14d417-1510226027697)]

組件可以和組件組合在一起到逊,組件內(nèi)部可以使用別的組件。就像普通的 HTML 標簽一樣使用就可以滤钱。這樣的組合嵌套觉壶,最后構成一個所謂的組件樹,就正如上面的例子那樣件缸,Index 用了 Header铜靶、MainFooter他炊,Header 又使用了 Title 争剿。這樣用這樣的樹狀結構表示它們之間的關系:

[圖片上傳失敗...(image-14acdf-1510226027697)]

這里的結構還是比較簡單,因為我們的頁面結構并不復雜痊末。當頁面結構復雜起來秒梅,有許多不同的組件嵌套組合的話,組件樹會相當?shù)膹碗s和龐大舌胶。理解組件樹的概念對后面理解數(shù)據(jù)是如何在組件樹內(nèi)自上往下流動過程很重要捆蜀。

下一節(jié)中我們將介紹《React.js 小書 Lesson9 - 事件監(jiān)聽》

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市辆它,隨后出現(xiàn)的幾起案子誊薄,更是在濱河造成了極大的恐慌,老刑警劉巖锰茉,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呢蔫,死亡現(xiàn)場離奇詭異,居然都是意外死亡飒筑,警方通過查閱死者的電腦和手機片吊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人阅虫,你說我怎么就攤上這事统倒。” “怎么了爷贫?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長补憾。 經(jīng)常有香客問我漫萄,道長,這世上最難降的妖魔是什么盈匾? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任腾务,我火速辦了婚禮,結果婚禮上削饵,老公的妹妹穿的比我還像新娘窑睁。我一直安慰自己,他們只是感情好葵孤,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布担钮。 她就那樣靜靜地躺著,像睡著了一般尤仍。 火紅的嫁衣襯著肌膚如雪箫津。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天宰啦,我揣著相機與錄音苏遥,去河邊找鬼。 笑死赡模,一個胖子當著我的面吹牛田炭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播漓柑,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼教硫,長吁一口氣:“原來是場噩夢啊……” “哼叨吮!你這毒婦竟也來了?” 一聲冷哼從身側響起瞬矩,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤茶鉴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后景用,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涵叮,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年伞插,在試婚紗的時候發(fā)現(xiàn)自己被綠了割粮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡媚污,死狀恐怖舀瓢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情杠步,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布榜轿,位于F島的核電站幽歼,受9級特大地震影響,放射性物質發(fā)生泄漏谬盐。R本人自食惡果不足惜甸私,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望飞傀。 院中可真熱鬧皇型,春花似錦、人聲如沸砸烦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幢痘。三九已至唬格,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間颜说,已是汗流浹背购岗。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留门粪,地道東北人喊积。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像玄妈,于是被迫代替她去往敵國和親乾吻。 傳聞我的和親對象是個殘疾皇子髓梅,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

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