JSX 语法
什么是 JSX
JSX 是 React 提供的可以在 JavaScript 中编写类似 HTML 的代码的语法糖,它可以让开发者更方便的描述 UI 的结构。
JSX 不能直接在浏览器中运行,需要通过 Babel 等工具将 JSX 转换为 JavaScript 代码。
JSX 的基本语法
定义组件
- 自定义组件的名称必须以大写字母开头
- 在组件中只能有一个根元素(因为函数只能返回一个值),可以使用
<></>
包裹多个元素 - 标签必须闭合
tsx
export default function BasicJSX() {
return (
<>
<h1>Hello React!</h1>
</>
);
}
使用表达式
使用{}
包裹表达式,表达式期待返回一个值。
tsx
export default function UseExpression() {
const name = 'React';
return (
<>
<h1>Hello {name}!</h1>
</>
);
}
使用图片
tsx
import reactLogo from '../../assets/react.svg';
export default function UsePic() {
return (
<>
{/* 导入本地图片 */}
<img src={reactLogo} className="logo react" alt="React logo" />
{/* 导入网络图片 */}
<img src='https://create-react-app.dev/img/logo.svg' alt='React logo' />
</>
);
}
渲染列表
tsx
export default function RenderList() {
const list = ['React', 'Vue', 'Angular'];
return (
<>
{
list.map((item, index) => <div key={index}>{item}</div>)
}
</>
);
}
条件渲染
条件渲染是根据条件来渲染不同的内容,常用的方式有三元运算符、逻辑与运算符、if 语句。
三元运算符
tsx
export default function RenderWithTernaryExpression({isShow}: {isShow: boolean}) {
return (
<>
{isShow ? <h1>Hello, React</h1> : <h1>Hello, Angular</h1>}
</>
);
}
逻辑与运算符
tsx
export default function RenderWithAnd({isShow}: {isShow: boolean}) {
return (
<>
<div>{isShow && <h1>Hello React!</h1>}</div>
</>
);
}
if 语句
tsx
export default function RenderWithIf({isShow}: {isShow: boolean}) {
let content = 'Hello Vue!';
if (isShow) {
content = 'Hello React!';
}
return (
<>
<h1>{content}</h1>
</>
);
}