条件渲染
条件渲染是React中的一种技术,用于根据某些条件决定是否渲染组件的某些部分。这在处理用户交互、数据状态和组件的可见性时非常有用。
条件渲染可以通过多种方式实现,包括:
- if语句:使用JavaScript的if语句来决定是否渲染组件。
- 三元运算符:使用三元运算符来决定是否渲染组件。
- 逻辑与运算符:使用逻辑与运算符来决定是否渲染组件。
使用if语句
function MyComponent(props) {
if (props.isLoggedIn) {
return <h1>Welcome back!</h1>;
}
return <h1>Please sign up.</h1>;
}
当isLoggedIn
为true
时,组件将渲染<h1>Welcome back!</h1>
,否则将渲染<h1>Please sign up.</h1>
。本质上这是两个不同的JSX,React会根据条件渲染其中一个。
使用三元运算符
假设一个组件内部只有一点逻辑有区别,例如:
if (isPacked) {
return <li className="item">{name} ✅</li>;
}
return <li className="item">{name}</li>;
遵循 DRY原则,我们可以简化为三元运算符:
return <li className="item">{name} {isPacked ? '✅' : ''}</li>;
注意
如果你的组件因为过多的嵌套三元运算符而变得混乱,考虑提取子组件来整理代码。在React中,你可以使用变量和函数等工具来整理复杂的表达式。
使用逻辑与运算符
在React组件中,当你希望在条件为真时渲染一些JSX,或者在条件为假时渲染空值时,逻辑与运算符(&&)非常有用。例如:
return <li className="item">{name} {isPacked && '✅'}</li>;
当isPacked
为true
时,组件将渲染<li className="item">{name} ✅</li>
,否则将渲染<li className="item">{name}</li>
。
注意
不要在&&的左边放数字。
JavaScript会自动将左边转换为布尔值。然而,如果左边是0,那么整个表达式会得到那个值(0),React会渲染0,而不是什么都没有。
例如,一个常见的错误是写这样的代码:messageCount && <p>New messages</p>
。很容易认为当messageCount
为0时,它会渲染什么都没有,但实际上它渲染的是0本身!
要修复它,使左边成为布尔值:messageCount > 0 && <p>New messages</p>
。
回顾
- 条件渲染是React中的一种技术,用于根据某些条件决定是否渲染组件的某些部分。
- 可以使用if语句、三元运算符和逻辑与运算符来实现条件渲染。
- 不要在&&的左边放数字,否则会导致渲染问题。