react隨記1 jsx簡介

JSX簡介

JSX是JavaScript的預(yù)發(fā)擴(kuò)展。推薦在React中使用JSX來描述用戶界面揭朝。

1.在JSX中使用表達(dá)式

在JSX中可以任意使用JavaScript表達(dá)式纽乱,需要放在大括號中{}.
比如像運(yùn)算 2+2幸缕,對象獲取屬性user.firstName以及調(diào)用JavaScript函數(shù)formatName(user)都可以作為表達(dá)式在JSX中使用悔详。
例如:

function formatName(user) {
  return user.firstName + ' ' + user.lastName;
}

const user = {
  firstName: 'Harper',
  lastName: 'Perez'
};

const element = (
  <h1>
    Hello, {formatName(user)}!
  </h1>
);

ReactDOM.render(
  element,
  document.getElementById('root')
);

在這段代碼中,真正的JSX部分是最后的兩段代碼宰睡,其中ReactDOM.render是將定義的內(nèi)容通過ReactDOM渲染成html的DOM蒲凶。element的定義是使用了表達(dá)式,看到調(diào)用JavaScript函數(shù)formatName的時(shí)候在外層加上了大括號{}夹厌。
上邊的兩段代碼就是我們平常寫的JavaScript代碼豹爹,第一段是函數(shù),第二段是對象定義矛纹。
可以看到臂聋,element元素在定義的時(shí)候,在外層加上了小括號()或南,其實(shí)不加也可以孩等。不過推薦加上小括號,這樣可以防止分號自動(dòng)插入的bug采够。也就是說在element定義的時(shí)候也可以如下的(親測可以):

const element = <h1>Hello, {formatName(user)}</h1>

這里看到很像html或者xml語法肄方,元素的閉合性也需要注意。

2.JSX本身也是一種表達(dá)式

JSX本身也是一種表達(dá)式蹬癌,JSX最終會(huì)結(jié)果React編譯权她,轉(zhuǎn)換成普通的JavaScript對象虹茶。那么這也就意味著,在JavaScript的語法中比如if或者for語句塊中使用JSX隅要,或者將JSX賦值給變量蝴罪,或者當(dāng)做函數(shù)的參數(shù)傳入,當(dāng)做返回值步清。
如下邊的代碼:

function getGreeting(user) {
  if (user) {
    return <h1>Hello, {formatName(user)}!</h1>;
  }
  return <h1>Hello, Stranger.</h1>;
}

3.JSX屬性

你可以使用引號來定義以字符串為值的屬性

const element = <div tabIndex="0"></div>;

也可以使用大括號來定義以 JavaScript 表達(dá)式為值的屬性

const element = (<img src={user.avatarUrl} />);

切記你使用了大括號包裹的 JavaScript 表達(dá)式時(shí)就不要再到外面套引號了要门。JSX 會(huì)將引號當(dāng)中的內(nèi)容識(shí)別為字符串而不是表達(dá)式。

4.JSX嵌套

如果JSX標(biāo)簽是閉合的廓啊,那么在結(jié)尾處需要使用 />欢搜,就像XML和HTML一樣。

const element = <img src="http://www.baidu.com" />

JSX標(biāo)簽也可以嵌套谴轮,就是類似在定義XML/HTML標(biāo)簽的時(shí)候炒瘟,也是可以嵌套的。

const element = (
 <div>
  <h1>hello world!</h1>
  <h2>good to see you here</h2>
</div>
);

如前面所說书聚,不用加小括號()也是可以的,可以測試

const element = 
 <div>
  <h1>hello world!</h1>
  <h2>good to see you here</h2>
</div>
;

但是需要注意的是唧领,如前面所說的元素的閉合性藻雌,如下的代碼是有問題的:

const element = (
  <h1>hello world!</h1>
  <h2>good to see you here</h2>
);

image.png

此時(shí)雖然用括號括起來了雌续,作用一個(gè)JSX元素,但是標(biāo)簽并不是閉合的胯杭,開頭是以<h1>開始驯杜,那么React認(rèn)為是結(jié)尾應(yīng)該以</h1>結(jié)束,但是這里卻是</h2>結(jié)束做个。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸽心,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子居暖,更是在濱河造成了極大的恐慌顽频,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件太闺,死亡現(xiàn)場離奇詭異糯景,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)省骂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門蟀淮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钞澳,你說我怎么就攤上這事怠惶。” “怎么了轧粟?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵策治,是天一觀的道長脓魏。 經(jīng)常有香客問我,道長通惫,這世上最難降的妖魔是什么轧拄? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮讽膏,結(jié)果婚禮上檩电,老公的妹妹穿的比我還像新娘。我一直安慰自己府树,他們只是感情好俐末,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奄侠,像睡著了一般卓箫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上垄潮,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天烹卒,我揣著相機(jī)與錄音,去河邊找鬼弯洗。 笑死旅急,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的牡整。 我是一名探鬼主播藐吮,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逃贝!你這毒婦竟也來了谣辞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沐扳,失蹤者是張志新(化名)和其女友劉穎泥从,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沪摄,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躯嫉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卓起。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片和敬。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖戏阅,靈堂內(nèi)的尸體忽然破棺而出昼弟,到底是詐尸還是另有隱情,我是刑警寧澤奕筐,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布舱痘,位于F島的核電站变骡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏芭逝。R本人自食惡果不足惜塌碌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望旬盯。 院中可真熱鬧台妆,春花似錦、人聲如沸胖翰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽萨咳。三九已至懊缺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間培他,已是汗流浹背鹃两。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舀凛,地道東北人俊扳。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像腾降,于是被迫代替她去往敵國和親拣度。 傳聞我的和親對象是個(gè)殘疾皇子碎绎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

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

  • 以下內(nèi)容是我在學(xué)習(xí)和研究React時(shí)螃壤,對React的特性、重點(diǎn)和注意事項(xiàng)的提取筋帖、精練和總結(jié)奸晴,可以做為React特性...
    科研者閱讀 8,232評論 2 21
  • 3. JSX JSX是對JavaScript語言的一個(gè)擴(kuò)展語法, 用于生產(chǎn)React“元素”日麸,建議在描述UI的時(shí)候...
    pixels閱讀 2,824評論 0 24
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5寄啼? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 27,485評論 1 45
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,196評論 0 3
  • 已經(jīng)不是效率不效率的問題代箭,也不是拖延不拖延的問題墩划,是真的忙,這又怎么破嗡综?我的第一想法是乙帮,早睡,養(yǎng)足精神再說极景。今天忙...
    Bruceshaoshao閱讀 220評論 0 0