React 条件渲染

在 React 中,可以有条件地渲染组件。

有几种方法可以做到这一点。


if 语句

我们使用 if JavaScript 运算符来决定要渲染的组件。

实例:

我们将使用这两个组件:

  1. function MissedGoal() {
  2. return <h2>MISSED!</h2>;
  3. }
  4. function MadeGoal() {
  5. return <h2>Goal!</h2>;
  6. }
实例:

现在,我们将创建另一个组件,该组件根据条件选择要渲染的组件:

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. function MissedGoal() {
  4. return <h2>MISSED!</h2>;
  5. }
  6. function MadeGoal() {
  7. return <h2>GOAL!</h2>;
  8. }
  9. function Goal(props) {
  10. const isGoal = props.isGoal;
  11. if (isGoal) {
  12. return <MadeGoal/>;
  13. }
  14. return <MissedGoal/>;
  15. }
  16. ReactDOM.render(
  17. <Goal isGoal={false} />,
  18. document.getElementById('root')
  19. );

尝试将 isGoal 属性更改为 true:

实例:
  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. function MissedGoal() {
  4. return <h2>MISSED!</h2>;
  5. }
  6. function MadeGoal() {
  7. return <h2>GOAL!</h2>;
  8. }
  9. function Goal(props) {
  10. const isGoal = props.isGoal;
  11. if (isGoal) {
  12. return <MadeGoal/>;
  13. }
  14. return <MissedGoal/>;
  15. }
  16. ReactDOM.render(
  17. <Goal isGoal={true} />,
  18. document.getElementById('root')
  19. );

逻辑 && 运算符

有条件地渲染 React 组件的另一种方法是使用 && 操作符。

Example:

我们可以使用大括号在 JSX 中嵌入 JavaScript 表达式:

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. function Garage(props) {
  4. const cars = props.cars;
  5. return (
  6. <>
  7. <h1>Garage</h1>
  8. {cars.length > 0 &&
  9. <h2>
  10. You have {cars.length} cars in your garage.
  11. </h2>
  12. }
  13. </>
  14. );
  15. }
  16. const cars = ['Ford', 'BMW', 'Audi'];
  17. ReactDOM.render(
  18. <Garage cars={cars} />,
  19. document.getElementById('root')
  20. );

如果 cars.length 等于 true,则将展示 && 之后的表达式。

尝试清空 cars 数组:

实例:
  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. function Garage(props) {
  4. const cars = props.cars;
  5. return (
  6. <>
  7. <h1>Garage</h1>
  8. {cars.length > 0 &&
  9. <h2>
  10. You have {cars.length} cars in your garage.
  11. </h2>
  12. }
  13. </>
  14. );
  15. }
  16. const cars = [];
  17. ReactDOM.render(
  18. <Garage cars={cars} />,
  19. document.getElementById('root')
  20. );

三元运算符

有条件地渲染元素的另一种方法是使用三元运算符。

  1. condition ? true : false

我们将回到 Goal 示例。

实例:

如果 isGoaltrue,则返回 MadeGoal 组件,否则返回 MissedGoal 组件:

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. function MissedGoal() {
  4. return <h2>MISSED!</h2>;
  5. }
  6. function MadeGoal() {
  7. return <h2>GOAL!</h2>;
  8. }
  9. function Goal(props) {
  10. const isGoal = props.isGoal;
  11. return (
  12. <>
  13. { isGoal ? <MadeGoal/> : <MissedGoal/> }
  14. </>
  15. );
  16. }
  17. ReactDOM.render(
  18. <Goal isGoal={false} />,
  19. document.getElementById('root')
  20. );

想学习更多, 可以查看 三元运算符 章节。