在 React 中,可以通过 JavaScript 的条件语句来动态渲染组件或元素。
以下是几种常用的在 React 中处理条件渲染的方法:
在 render 方法或函数组件的返回值中使用 if 语句来决定渲染内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import React from 'react'; import ReactDOM from 'react-dom/client'; class MyComponent extends React.Component { render() { const isLoggedIn = this.props.isLoggedIn; let content; if (isLoggedIn) { content = <h1>Welcome back!</h1>; } else { content = <h1>Please sign up.</h1>; } return ( <div> {content} </div> ); } } const root = ReactDOM.createRoot(document.getElementById('root')); root.render(<MyComponent isLoggedIn={true} />); |
在 JSX 中,可以使用三元运算符进行简洁的条件渲染。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import React from 'react'; import ReactDOM from 'react-dom/client'; const MyComponent = (props) => { const isLoggedIn = props.isLoggedIn; return ( <div> {isLoggedIn ? <h1>Welcome back!</h1> : <h1>Please sign up.</h1>} </div> ); }; const root = ReactDOM.createRoot(document.getElementById('root')); root.render(<MyComponent isLoggedIn={true} />); |
在 JSX 中,可以使用逻辑与运算符来进行条件渲染。如果条件为 true,则渲染后面的元素。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import React from 'react'; import ReactDOM from 'react-dom/client'; const MyComponent = (props) => { const isLoggedIn = props.isLoggedIn; return ( <div> {isLoggedIn && <h1>Welcome back!</h1>} {!isLoggedIn && <h1>Please sign up.</h1>} </div> ); }; const root = ReactDOM.createRoot(document.getElementById('root')); root.render(<MyComponent isLoggedIn={true} />); |
在需要处理多个条件时,可以在 render 方法中使用 switch 语句。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
import React from 'react'; import ReactDOM from 'react-dom/client'; class MyComponent extends React.Component { render() { const userRole = this.props.userRole; let content; switch (userRole) { case 'admin': content = <h1>Welcome, Admin!</h1>; break; case 'user': content = <h1>Welcome, User!</h1>; break; case 'guest': content = <h1>Welcome, Guest!</h1>; break; default: content = <h1>Who are you?</h1>; } return ( <div> {content} </div> ); } } const root = ReactDOM.createRoot(document.getElementById('root')); root.render(<MyComponent userRole="admin" />); |
if
语句:适合在 render
方法或函数组件的返回值中使用来决定渲染内容。&&
) 运算符:适合在 JSX 中条件渲染,当条件为 true
时渲染元素。switch
语句:适合处理多个条件,进行不同内容的渲染。
from:https://www.runoob.com/react/react-conditional.html