03組件與props

1.組件理解

組件,從概念上類似于 JavaScript 函數(shù)辰晕。它接受任意的入參(即 “props”),并返回用于描述頁面展示內容的 React 元素痊末。簡單理解就是一個產生React元素的東西乓土,同時它可以復用(個人理解)

2.定義組件的方式

  1. 函數(shù)組件:通過函數(shù)定義毕荐,返回React元素

    function Welcome(props) {
      return <h1>Hello, {props.name}</h1>;
    }
    

    該函數(shù)是一個有效的 React 組件郁惜,因為它接收唯一帶有數(shù)據的 “props”(代表屬性)對象與并返回一個 React 元素涡上。這類組件被稱為“函數(shù)組件”柬唯,因為它本質上就是 JavaScript 函數(shù)认臊。

  2. class組件:利用es6的class來定義組件

    class Welcome extends React.Component {
      render() {
        return <h1>Hello, {this.props.name}</h1>;
      }
    }
    
  3. 注意: 組件名稱必須以大寫字母開頭。(區(qū)別DOM標簽)

3.props

React 元素也可以是用戶自定義的組件锄奢。當 React 元素為用戶自定義組件時失晴,它會將 JSX 所接收的屬性(attributes)以及子組件(children)轉換為單個對象傳遞給組件,這個對象被稱之為 “props”拘央。

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

const element = <Welcome name="Sara" />;
ReactDOM.render(
  element,
  document.getElementById('root')
);
/*
    1.我們調用 ReactDOM.render() 函數(shù)涂屁,并傳入 <Welcome name="Sara" /> 作   為參數(shù)。
    2.React 調用 Welcome 組件灰伟,并將 {name: 'Sara'} 作為 props 傳入拆又。
    3.Welcome 組件將 <h1>Hello, Sara</h1> 元素作為返回值儒旬。
    4.React DOM 將 DOM 高效地更新為 <h1>Hello, Sara</h1>。
*/

4.props的只讀性

組件無論是使用函數(shù)聲明還是通過 class 聲明帖族,都決不能修改自身的 props栈源。

function sum(a, b) {
  return a + b;
}

這樣的函數(shù)被稱為純函數(shù),因為該函數(shù)不會嘗試更改入參竖般,且多次調用下相同的入參始終返回相同的結果甚垦。相反,下面這個函數(shù)則不是純函數(shù)涣雕,因為它更改了自己的入參:

function withdraw(account, amount) {
  account.total -= amount; //account對應的實參與account指向同一對象艰亮,account內部數(shù)據的改變會改變實參
}

React 非常靈活,但它也有一個嚴格的規(guī)則:

所有 React 組件都必須像純函數(shù)一樣保護它們的 props 不被更改挣郭。組件無法修改自己的props屬性迄埃。

當然,應用程序的 UI 是動態(tài)的兑障,并會伴隨著時間的推移而變化侄非。React提供一種新的概念,稱之為 “state”流译。在不違反上述規(guī)則的情況下彩库,state 允許 React 組件隨用戶操作、網絡響應或者其他變化而動態(tài)更改輸出內容先蒋。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末骇钦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子竞漾,更是在濱河造成了極大的恐慌眯搭,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件业岁,死亡現(xiàn)場離奇詭異鳞仙,居然都是意外死亡,警方通過查閱死者的電腦和手機笔时,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門棍好,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人允耿,你說我怎么就攤上這事借笙。” “怎么了较锡?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵业稼,是天一觀的道長。 經常有香客問我蚂蕴,道長低散,這世上最難降的妖魔是什么俯邓? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮熔号,結果婚禮上稽鞭,老公的妹妹穿的比我還像新娘。我一直安慰自己引镊,他們只是感情好川慌,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著祠乃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兑燥。 梳的紋絲不亂的頭發(fā)上亮瓷,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音降瞳,去河邊找鬼嘱支。 笑死,一個胖子當著我的面吹牛挣饥,可吹牛的內容都是我干的除师。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼扔枫,長吁一口氣:“原來是場噩夢啊……” “哼汛聚!你這毒婦竟也來了?” 一聲冷哼從身側響起短荐,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤倚舀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后忍宋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痕貌,經...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年糠排,在試婚紗的時候發(fā)現(xiàn)自己被綠了舵稠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡入宦,死狀恐怖哺徊,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情乾闰,我是刑警寧澤唉工,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站汹忠,受9級特大地震影響淋硝,放射性物質發(fā)生泄漏雹熬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一谣膳、第九天 我趴在偏房一處隱蔽的房頂上張望竿报。 院中可真熱鬧,春花似錦继谚、人聲如沸烈菌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芽世。三九已至,卻和暖如春诡壁,著一層夾襖步出監(jiān)牢的瞬間济瓢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工妹卿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旺矾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓夺克,卻偏偏與公主長得像箕宙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子铺纽,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355