React入門:關于JSX語法一

借鑒:原著

JSX語法,像是在Javascript代碼里直接寫XML的語法,實質上這只是一個語法糖,每一個XML標簽都會被JSX轉換工具轉換成純Javascript代碼,React 官方推薦使用JSX,當然你想直接使用純Javascript代碼寫也是可以的,只是使用JSX,組件的結構和組件之間的關系看上去更加清晰

看代碼:

插圖

那么也就是說,我們寫一個XML標簽,實質上就是在調用React.createElement這個方法,并返回一個ReactElement對象。

查看API:鏈接

插圖2

這個方法的第一個參數可以是一個字符串,表示是一個HTML標準內的元素,或者是一個ReactClass類型的對象,表示我們之前封裝好的自定義組件。第二個參數是一個對象,或者說是字典也可以,它保存了這個元素的所有固有屬性(即傳入后基本不會改變的值)。從第三個參數開始,之后的參數都被認作是元素的子元素。

轉化

React JSX將類似XML的語法轉化到原生的JavaScript,元素的標簽、屬性和子元素都會被當作參數傳給React.createElement方法:


插圖3

JSX轉化器

要把帶有JSX語法的代碼轉化為純Javascript代碼,有多種方式,對于內聯與HTML中的代碼或者是未經過轉化的外部文件,在script標簽中要加上type="text/jsx",并引入JSXTransformer.js文件即可,不過這種方式并不建議在生產環境使用,建議的方法是在代碼上線前就將代碼轉換好,可以使用npm全局安裝react-tools:

插圖4

并使用命令行工具轉化即可(具體用法可以參考jsx -h):

插圖5

如果使用自動化工具,比如gulp的話,可以使用相應插件gulp-react。

查看;鏈接


HTML 標簽 vs. React 組件

React.render方法可以渲染HTML結構,也可以渲染React組件。

渲染HTML標簽,聲明變量采用首字母小寫

渲染React組件,聲明變量采用首字母大寫

React 的 JSX 使用大寫和小寫字母來區分本地的組件類和 HTML 標簽.

不過需要注意的是class和for這兩個屬性,JSX語法最終是要被轉換為純Javascript的,所以要和在Javascript DOM中一樣,用className和htmlFor。

插圖7

還有一點是,在創建HTML標準內的元素時,JSX轉化器會丟棄那些非標準的屬性,如果一定要添加自定義屬性,那么需要在這些自定義屬性之前添加data-前綴

命名空間式組件

比如開發組件的時候,一個組件有多個子組件,你希望這些子組件可以作為其父組件的屬性,那么可以像這樣用

插圖

這樣你只需將子組件的ReactClass作為其父組件的屬性:

插圖12
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 而創建子元素可以直接交給JSX轉化器 Javascript表達式 在JSX語法中寫Javascript表達式只需要...
    星空夢想閱讀 593評論 0 0
  • 以下內容是我在學習和研究React時,對React的特性、重點和注意事項的提取、精練和總結,可以做為React特性...
    科研者閱讀 8,291評論 2 21
  • 005@關于JSX語法 轉(有所更改):React入門:關于JSX語法可以參考的資料:React.js學習筆記之J...
    驀然之間的閱讀 942評論 0 0
  • JSX是React的核心組成部分,它使用XML標記的方式去直接聲明界面,界面組件之間可以互相嵌套??梢岳斫鉃樵贘S...
    可樂愛上咖啡閱讀 72,039評論 1 63
  • 原教程內容詳見精益 React 學習指南,這只是我在學習過程中的一些閱讀筆記,個人覺得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,860評論 1 18