React JSX — html 和JavaScript的完美結合
React 利用 JSX 語法來開發,類似 XML 的寫法,可以將 UI 介面跟程式邏輯跟緊密的結合(在 html 中使用 JavaScript 語法),一般的瀏覽器是看不懂 JSX 的,就需要 babel 來轉化成一般的 JavaScript,如果經過 babel 編譯就會發現 JSX 被轉為 React.createElement,所以 JSX 比較像是語法糖的概念。
JSX 的寫法
1 | <h1>Hello World</h1> |
React.createElement 的寫法
1 | React.createElement(“h1”, null, “Hello World”); |
JSX 看起來是不是簡單多了!?
根節點
這邊要特別注意,如同 vue 的 template 一樣,都是需要一個根節點,像下面這樣沒有一個根節點 dom 包住是會報錯的。
貼心提醒你是否要用 Fragment
用 Fragment 的好處就是不會額外增加不必要的 dom 節點
1 | import React, { Component, Fragment } from "react"; |
<Fragment> </Fragment>
也可以縮寫寫成<> </>
html tag 需要有開始標籤和結束標籤,如果沒有結束標籤就要以 />結尾,JSX 習慣用()包起來。
JavaScript 表達式
可以用大括號來放入動態的變數,大括號{}包起來的地方就可以寫 JavaScript 表達式,雖然不能寫 if else,但可以在裡面寫 function 三元運算式沒問題
樣式的設置
style 的話可以傳入物件,不過 css 屬性都要變成駝峰式,個人是蠻不習慣的,fontSize 可以不寫 px。
如果直接寫 inlineStyle,很常少寫大括號,要記得是雙括號!
也可以另外寫一隻單獨的 css,再透過 class 來讀取樣式,這邊要注意的是 class 是 JavaScript 中的保留關鍵字,所以要用 className 取代,for 也是,需要用 htmlFor 取代。
在大括號裡面放入陣列,會自動展開!
結果如圖
注入 html
可以利用 dangerouslySetInnerHTML 來帶入 html,相當於 innerHtml,注意這邊為兩個下底線 __html:要傳入的 html
如何引入圖片
requre 的方式
1 | <img src={require('../public/su.jpeg')} /> |
不過這時候我把圖片丟在 public,結果就報錯了
字面上的意思就是請你要放在 src 底下才能拿到圖片,於是就在 src 底下新增一個 assets 資料夾放圖片,就成功了
import 的方式
1 | import img from "./assets/su.jpeg"; |
然後在 JSX 的部分賦予 img 這個變數即可
1 | <img src="{img}" /> |
以上就是針對 JSX 的簡單介紹!