JSX簡介

1 JSX是什么?

1.1 JSX 是一個基于 JavaScript + XML 的一個擴(kuò)展語法??梢允褂胋abel.js在瀏覽器中處理JSX。
  • 它可以作為值使用
  • 它并不是字符串
  • 它也不是HTML
  • 它可以配合JavaScript 表達(dá)式一起使用
1.2 JSX本質(zhì)

JSX本質(zhì)是React.createElement(component,props,children)函數(shù)的語法糖。
React17和17之前的差異

  1. 在 React 17 新增了 JSX-runtime,可以將 JSX 直接編譯成 虛擬DOM;
  2. 在 React 17 之前,JSX 將會被編譯成 React.createElement();

所以,在 17 及之后,如果模塊中,只用到了 React 的 JSX ,則不需要引入 React 依賴

1.3 插值表達(dá)式:在JSX中可以使用{表達(dá)式}嵌入表達(dá)式。表達(dá)式指的是:產(chǎn)生值的一組代碼的集合,例如:
  • 變量
  • 算術(shù)運(yùn)算
  • 函數(shù)調(diào)用
  • ......

注意:分清楚表達(dá)式與語句的區(qū)別,if、for、while這些都是語句,JSX不支持語句。

2 各種類型內(nèi)容在插值中的使用

2.1 JSX中的注釋
{/*注釋*/}
{/*
            多行注釋
*/}
2.2 JSX輸出數(shù)據(jù)類型

2.2.1 JSX嵌入變量
1.基本類型:

  • Number、String、Array類型時,可以直接顯示;
  • null、undefined、Boolean類型時,內(nèi)容為空;(如果希望可以顯示null、undefined、Boolean,那么需要轉(zhuǎn)成字符串;轉(zhuǎn)換的方式有:toString方法、空字符串拼接、String(變量)等方式;)

2.復(fù)合類型:

  • 對象 --- 報錯
  • 數(shù)組 -- 數(shù)組展開之后,每一位都是一個子元素
  • 函數(shù) -- 報錯

2.2.2 JSX嵌入表達(dá)式
運(yùn)算表達(dá)式、三元運(yùn)算符、執(zhí)行一個函數(shù)

2.3 JSX使用

2.3.1 列表渲染

  • 數(shù)組:將原有數(shù)據(jù)轉(zhuǎn)換成數(shù)組,利用JSX可以插入數(shù)組的特性,映射出新數(shù)組
  • 對象擴(kuò)展:虛擬DOM和diff

2.3.2 條件渲染

  • 三元運(yùn)算符(?:)
  • 與或運(yùn)算符(|| &&)

2.3.3 在屬性上使用表達(dá)式
JSX 中的表達(dá)式也可以使用在屬性上,但是使用的時候需要注意:當(dāng)在屬性中使用 {} 的時候,不要使用引號包含。屬性名使用駝峰命名。

3 JSX使用注意事項(xiàng)

  • 必須有,且只有一個頂層的包含元素 - React.Fragment,即文檔碎片,用于充當(dāng)包含容器,并不會在DOM解析出來,react17之后也可以使用空標(biāo)簽(<></>)充當(dāng)包含容器。
  • JSX 不是html,也不是字符串,很多屬性在編寫時不一樣
    • className
    • style
  • 列表渲染時,必須有 key 值
  • 在 jsx 所有標(biāo)簽必須閉合
  • 組件的首字母一定大寫,標(biāo)簽一定要小寫
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容