- Objective:
- Breadcrumb:
# 概念阐释
## 语义
在React中使用if 条件语句
## 语法
```jsx
{isLoading?'Loading':'NotLoading'}
```
# 实例
if条件语句无法像[[JSX 变量]]那样用花括号嵌入JSX元素中
```jsx
let message = (
<h1>
{
if (purchase.complete) {
'Thank you for placing an order!'
}
}
</h1>
);
// 报错
```
正确的写法是直接写if语句,不要嵌入[[JSX Elements]]元素中,设置一个`为空`的变量`message`,符合条件时存储至这个变量中。
```jsx
import React from 'react';
import { createRoot } from 'react-dom/client';
const container = document.getElementById('app');
const root = createRoot(container);
let message;
if(user.age >= drinkingAge) {
message = (
<h1> 来看看这款酒精饮料! </h1>
);
}else{
message = (
<h1> 来吃pizza!</h1>
);
};
render.root(message);
```
# 相关内容
## 三元运算符
如果使用三元运算符,则可以写成JSX元素的语法格式
```jsx
let message = (
<h1>
{user.age>=drinkingAge ? '来看看这款酒精饮料!' : '来吃pizza!'}
</h1>
);
render.root(message);
```
三元运算符中的变量不加花括号
```jsx
{authorized===true ? contactInfo : login}
```
- `contactInfo` 和`login`分别是 2 个变量
# 问题
写一个if条件,如果硬币为head,展示kitty图片,如果为tails,展示doggy图片。
```jsx
import React from 'react';
import { createRoot } from 'react-dom/client';
const container = document.getElementById('app');
const root = createRoot(container);
function coinToss() {
// This function will randomly return either 'heads' or 'tails'.
return Math.random() < 0.5 ? 'heads' : 'tails';
}
const pics = {
kitty: 'https://content.codecademy.com/courses/React/react_photo-kitty.jpg',
doggy: 'https://content.codecademy.com/courses/React/react_photo-puppy.jpeg'
};
let img;
```
用三元运算符格式
# 问题答案
```jsx
if(coinToss==='heads'){
img = <img src={pics.kitty} />;
}else{
img = <img src={pics.doggy} />;
}
render.root(img);
```
```jsx
// 三元运算符格式
let img = (
<img src={pics[coinToss==='heads'?'kitty':'doggy']} />
);
let img = coinToss() ? <img src={pics.kitty} /> : <img src={pics.doggy} />;
```
pics的写法是[[js objects 对象属性]],`pics[]`是获取属性的另一种写法,`[]`中的属性值必须都包括在`''`单引号内。
# 参考资料
- [JSX Conditionals: If Statements That Do Work](https://www.codecademy.com/journeys/full-stack-engineer/paths/fscj-22-front-end-development/tracks/fscj-22-react-part-i/modules/wdcp-22-jsx-752c2293-9f61-412a-92e2-70ad6e01a0a7/lessons/react-jsx-advanced/exercises/jsx-conditionals-valid-if)