簡(jiǎn)單易懂的React魔法(07):在JSX中使用if/else

現(xiàn)在 render() 里的代碼是這樣的:
src/pages/Detail.js

return <p>Hello, {chance.first()}!</p>;

在大括號(hào)里的ES6代碼將會(huì)在編譯時(shí)執(zhí)行命黔,將其返回值填入render鸵熟,所以當(dāng)你每次刷新頁(yè)面都會(huì)看到隨機(jī)的名字绸狐。
不過這段代碼實(shí)際上是一種非常特殊的代碼,稱為表達(dá)式惧财,相對(duì)于另一種可以創(chuàng)建變量或者去執(zhí)行其它類型操作的語(yǔ)句宋税,它粗略的表示它可以直接表示為一個(gè)值。
其實(shí)區(qū)別不大坪圾,不過相信我:這些區(qū)別這很重要晓折。因?yàn)槟阒荒茉贘SX中使用表達(dá)式惑朦,不能使用所有的代碼。比如{this.props.message} 和 {chance.first()}都是合法的漓概,但是下面的代碼就不合法:

{if (chance.first() === 'John') { console.log('Got John');
} else { console.log('Got someone else'); } }

說明一下, === 是JavaScript中推薦的比較兩個(gè)值的運(yùn)算符; 如果你現(xiàn)在用 ==那你得趕緊換了,因?yàn)?=會(huì)對(duì)兩個(gè)對(duì)比的值進(jìn)行轉(zhuǎn)義漾月,===并不會(huì),被稱為嚴(yán)格相等胃珍。
現(xiàn)在你可能會(huì)想:“不允許寫這種代碼真是太好了梁肿,它太難懂了√孟剩”確實(shí)如此栈雳,你不能在JSX中使用if/else語(yǔ)句,但是JavaScript是一種非常松散的類C語(yǔ)言缔莲,意味著它繼承了三元運(yùn)算符來(lái)代替if/else哥纫。
也就是說,有可以在JSX中使用的if/else的替代品痴奏,它有很嚴(yán)格的語(yǔ)法:
src/pages/Detail.js

{chance.first() === 'John' ? console.log('Got John')
: console.log('Got someone else') }

可能加上縮進(jìn)會(huì)更清楚一些:
src/pages/Detail.js

{
    chance.first() == 'John'
    ? console.log('Got John')
    : console.log('Got someone else')
}

如果你想的話可以把他加到組件中蛀骇,但這只是演示例子,用完就刪掉了读拆。

兩個(gè)括號(hào)不用解釋擅憔,不過其中有一些新的東西,稱為三元表達(dá)式檐晕,因?yàn)樗怯扇糠纸M成:條件:(chance.first() == 'John')暑诸,如果條件為真則執(zhí)行(console.log('Got John'))
如果條件為假則執(zhí)行(console.log('Got someone else')).

重要的部分是問號(hào)和冒號(hào):條件為真執(zhí)行的語(yǔ)句在問號(hào)后,條件為假執(zhí)行的語(yǔ)句在冒號(hào)后辟灰「鲩牛看起來(lái)有點(diǎn)難以理解不是么,不過只有這樣才能在JSX中使用if/else芥喇,不管你喜不喜歡西采,在接下來(lái)的react代碼里,你會(huì)看到到處都是三元表達(dá)式继控。

更糟糕的是械馆,你會(huì)經(jīng)常看到嵌套的三元表達(dá)式包含著一堆問號(hào)冒號(hào)武通,形成一個(gè)真假樹霹崎。JSX允許這樣,不過我敢肯定日內(nèi)瓦公約都不允許這樣寫,最好別這么做冶忱。

不過在JSX中寫三元表達(dá)式的好處是尾菇,他們的返回值會(huì)直接放到輸出里。比如:

src/pages/Detail.js

render() {
    return <p>
    {
        chance.first() == 'John'
        ? 'Hello, John!'
        : 'Hello, world!'
    }
    </p>;
}

在這個(gè)例子中,三元表達(dá)式的真假判斷后執(zhí)行的部分只有一個(gè)字符串错沽,這些字符串會(huì)被傳回JSX中, 被渲染成p標(biāo)簽眶拉。
所以準(zhǔn)備好使用這些三元表達(dá)式千埃,而且他們經(jīng)常寫在一行,不過這種寫法很容易被濫用忆植。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末放可,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子朝刊,更是在濱河造成了極大的恐慌耀里,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拾氓,死亡現(xiàn)場(chǎng)離奇詭異冯挎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)咙鞍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門房官,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人续滋,你說我怎么就攤上這事翰守。” “怎么了疲酌?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵蜡峰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我朗恳,道長(zhǎng)湿颅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任僻肖,我火速辦了婚禮肖爵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘臀脏。我一直安慰自己劝堪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布揉稚。 她就那樣靜靜地躺著秒啦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搀玖。 梳的紋絲不亂的頭發(fā)上余境,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼芳来。 笑死含末,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的即舌。 我是一名探鬼主播佣盒,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼顽聂!你這毒婦竟也來(lái)了肥惭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤紊搪,失蹤者是張志新(化名)和其女友劉穎蜜葱,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耀石,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡牵囤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了滞伟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奔浅。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖诗良,靈堂內(nèi)的尸體忽然破棺而出汹桦,到底是詐尸還是另有隱情,我是刑警寧澤鉴裹,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布舞骆,位于F島的核電站,受9級(jí)特大地震影響径荔,放射性物質(zhì)發(fā)生泄漏督禽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一总处、第九天 我趴在偏房一處隱蔽的房頂上張望狈惫。 院中可真熱鬧,春花似錦鹦马、人聲如沸胧谈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)菱肖。三九已至,卻和暖如春旭从,著一層夾襖步出監(jiān)牢的瞬間稳强,已是汗流浹背场仲。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留退疫,地道東北人渠缕。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像褒繁,于是被迫代替她去往敵國(guó)和親褐健。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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