[React筆記 02] react JSX 基本語法
目錄 | Contents
JSX
看起來是 html 與 JS 混合使用,比較接近 JavaScript 而不是 HTML, JSX 允許你使用 JavaScript 所有的功能。
html 區域
剛剛產生的public/index.html,含有基本HTML範本id=”root”的div區塊
1 | "<div id="root"></div>" |
React 中的 JSX 區域
接著看一下src/index.js裡的程式碼
基本範例: 直接撰寫 html
1 | // APP是組件 |
解說:
- 由 React DOM 函式將元素渲染 ROOT 這個DOM 節點中
- 而將 html當參數傳遞是使用一種Javascript語法: JSX
1
2
3
4
5
6
7
8const name = 'Josh Perez'; //一般javascript
const element = <h1>Hello, {name}</h1>;//混和的html與字串 特殊JSX語法
ReactDOM.render(
element,
document.getElementById('root')
);
關於 Babel
是JavaScript 前處理器,編譯器,主要能轉換JSX與ES6成各瀏覽器支持的 JS
1 | const element = ( |
Babel 將 JSX 編譯為呼叫 React.createElement() 的程式。
1 | const element = React.createElement( |
範例: 在 html中 可以用 {JS} 表達式崁入變數
1 | //js函式宣告或是變數宣告區 |
範例: 帶入屬性命名與Event
1 | const getValue=(event)=>{ |
- 駱駝式命名
- class 要用 className 然後可以在 style.css中更改樣式
- onclick 也要改onClick{函數名稱} 駱駝式命名
- 實測命名打錯 console 會出現報 Warning: Invalid DOM property
class
. Did you meanclassName
?
- 輸入類的元件button/input/textarea互動事件觸發時,函式只會接收到一個event類別的參數,並不能傳遞其他參數
- 布林=true 的屬性值可以不寫
範例 JSX引入Inline-style
1 | export default function App() { |
- 在style內的是 JS物件也可以把他們只給一個const變數
- 內容與css不同的是必須是小寫駱駝且去除’-‘
- 這種寫法的缺點是不行用hover等特殊效果,需利用其他模組化stylr寫法
網路參考文章
- [【React.js入門 - 06】 JSX](https://ithelp.ithome.com.tw/articles/10216468)
- [React篇: JSX語法撰寫指引](https://eyesofkids.gitbooks.io/react-basic-zh-tw/content/day18_deeper_jsx/ "React篇: JSX語法撰寫指引")
[React筆記 02] react JSX 基本語法