React JSX基礎語法教程示例
1、什么是 JSX
JSX 是 JavaScript 的一種語法擴展??梢越M裝 UI 界面,同時可以和 JavaScript 語法配合使用。
2、為什么使用 JSX
- 使用熟悉的語法定義 HTML 元素,提供更加語義化的標簽,使用 JSX 編寫模板更簡單快速
- 更加直觀:JSX 讓組件更加簡單、明了、直觀
- 抽象了 React 元素的創(chuàng)建過程,使得編寫組件變得更加簡單
舉例說明如下:
// react17版本之前
const children1 = React.createElement("li", null, "第一個組件內容!");
const children2 = React.createElement("li", null, "第二個組件內容!");
const root = React.createElement(
"ul",
{ className: "list" },
children1,
children2
);
// react17版本之后
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
const root = _jsxs("ul", {
className: "list",
children: [
_jsx("li", {
children: "Hello",
}),
_jsx("li", {
children: "World",
}),
],
});JSX 等價如下:
const root = (
<ul className="list">
<li>Hello</li>
<li>World</li>
</ul>
);顯然 JSX 寫法更便于頁面的編寫與維護,且簡單、直觀。
3、JSX 書寫規(guī)范
- JSX 的最外層只能有一個根元素,可以使用 div 、span 等標簽
- 正常情況下,我可以在最外層包裹一個小括號(),方便我們更好的格式化代碼
- JSX 中的標簽可以是單標簽,也可以是雙標簽;注意:如果是單標簽,必須以/>結尾
- 在使用變量時,我們可以將其放在一個大括號中,大括號內可以放置任何有效的 JavaScript 表達式
代碼示例如下:
const root = (
<div className="list">
<div>第一個組件內容!</div>
<img src="xxx.jpg" />
{1 === 1 && <div>第二個組件內容!</div>}
</div>
);4、JSX 注釋
通常有以下三種注釋
<ul className="list">
{/* 1、單行注釋 */}
<li>第一個組件內容!</li> // 2、行尾注釋
<li>第二個組件內容!</li>
{/*
3、多行注釋
1
2
3
*/}
</ul>5、JSX 嵌入變量
變量在 JSX 使用,需要用大括號 { } 包裹;注意:使用的變量需要提前定義。如下。
const MyComponent = () => {
const text = "Hello World!";
return <div>{text}</div>;
};
export default MyComponent;6、JSX 嵌入表達式
- 運算符表達式
- 三元表達式
- 函數調用
const MyComponent = () => {
const isFinish = true;
const calc = () => {
const a = 1;
const b = 2;
return a + b;
};
return (
<div>
{/*1.運算符表達式*/}
<span>2 + 3 的和為:{2 + 3}</span>
{/*2.三元表達式*/}
<span>家庭作業(yè)是否完成:{isFinish ? "是" : "否"}</span>
{/*3.進行函數調用*/}
<span>{calc()}</span>
</div>
);
};
export default MyComponent;7、JSX 綁定屬性
注意:在給元素綁定 style 時,外層的大括號是表示可傳入變量或者表達式。而內部的大括號是一個對象,它里面是鍵值對,表示元素的樣式屬性及屬性值。另外,當屬性是由多個單詞組成的時候,需要用駝峰命名法來表示,例如:fontSize
const MyComponent = () => {
const title = "我是標題的全部內容!";
const url = "https://www.baidu.com";
const className = "span";
return (
<div>
{/* 1、綁定普通屬性 */}
<h2 title={title}>我是標題...</h2>
<a href={url}>百度一下</a>
{/* 2.綁定class */}
<span className={className}>我是span標簽</span>
<span className={["tag", "span"].join(" ")}>我是span標簽2</span>
{/* 3.綁定style */}
<span style={{ color: "red", fontSize: 16 }}>我的字體顏色是紅色</span>
</div>
);
};
export default MyComponent;8、JSX 綁定事件
可以看出 React 元素的事件處理和 DOM 元素的很相似,但存在一些語法上的差異:
- React 的事件采用駝峰式命名,而不是純小寫的方式
- 使用 JSX 語法時,需要傳入一個函數作為事件處理函數,而不是一個字符串
- 使用函數時不能加括號,不然會直接執(zhí)行
- 如果函數過于簡單,可在 JSX 中直接編寫函數內容
const MyComponent = () => {
const onClick = () => {
window.alert("您點擊了按鈕1");
};
return (
<div>
<button onClick={onClick}>按鈕1</button>
<button
onClick={() => {
window.alert("您點擊了按鈕2");
}}
>
按鈕2
</button>
</div>
);
};
export default MyComponent;9、JSX 條件渲染
常見的條件渲染的方式有以下三種:
- 方式一:條件判斷語句,適合邏輯較多的情況
- 方式二:三元運算符,適合邏輯比較簡單
- 方式三:與運算符&&,如果條件成立,渲染&&后面的組件;如果條件不成立,則都不渲染
const MyComponent = () => {
const renderTitle = (key) => {
if (key > 1) {
return <span>我是標題1</span>;
}
return <span>我是標題2</span>;
};
return (
<div>
{renderTitle(2)}
{2 > 1 ? <span>我會顯示出來</span> : <span>我會隱藏</span>}
{2 > 1 && <span>我會顯示出來</span>}
</div>
);
};
export default MyComponent;10、JSX 列表渲染
我們通常使用 Javascript 的 map 函數來處理 JSX 數組列表循環(huán)渲染;如下
const MyComponent = () => {
const array = ["1", "2", "3", "4"];
return (
<ul>
{array.map((i) => (
<li key={i}>{i}</li>
))}
</ul>
);
};
export default MyComponent;注意:在渲染是,我們需要給渲染項添加一個 key,不然會報錯:warning: Each child in a list should have a unique "key" prop.
key 和 React 中的 diff 算法密切相關。
以上就是React JSX基礎語法教程示例的詳細內容,更多關于React JSX基礎語法的資料請關注腳本之家其它相關文章!

