Conditional rendering in React refers to the technique of rendering different UI elements based on certain conditions or states. React provides several ways to conditionally render components or elements depending on the application’s state or props.
Conditional rendering is the concept where different components or elements are rendered based on specific conditions. In React, this is typically achieved by using JavaScript operators like if, ternary, or && within JSX to decide what should be displayed.
The traditional approach of using if or else statements can be used before returning JSX. This is especially useful when multiple conditions need to be checked.
import React, { useState } from "react"; const MyComponent = () => { const [isLoggedIn, setIsLoggedIn] = useState(false); if (isLoggedIn) { return <h1>Welcome back!</h1>; } else { return <button onClick={() => setIsLoggedIn(true)}>Login</button>; } };
The ternary operator is a shorthand way of performing conditional rendering. It’s useful when you want to display one element if a condition is true and another element if it's false.
import React, { useState } from "react"; const MyComponent = () => { const [isLoggedIn, setIsLoggedIn] = useState(false); return ( <> {isLoggedIn ? ( <h1>Welcome back!</h1> ) : ( <button onClick={() => setIsLoggedIn(true)}>Login</button> )} </> ); };
The && operator is a short-circuit operator that renders an element if the condition is true. This approach is useful when you only need to render something conditionally without an else branch.
import React, { useState } from "react"; const MyComponent = () => { const [isLoggedIn, setIsLoggedIn] = useState(false); return ( <> {isLoggedIn && <h1>Welcome back!</h1>} {!isLoggedIn && <button onClick={() => setIsLoggedIn(true)}>Login</button>} </> ); };
You can also use functions to handle conditional rendering more clearly, especially when there are multiple conditions to check.
import React, { useState } from "react"; const MyComponent = () => { const [status, setStatus] = useState("loading"); const renderContent = () => { if (status === "loading") { return <p>Loading...</p>; } else if (status === "error") { return <p>Error occurred!</p>; } else { return <p>Data loaded successfully!</p>; } }; return ( <div> {renderContent()} <button onClick={() => setStatus("error")}>Simulate Error</button> <button onClick={() => setStatus("success")}>Simulate Success</button> </div> ); };
Sometimes, you might want to render entire components based on a certain condition.
import React, { useState } from "react"; const Welcome = () => <h1>Welcome back!</h1>; const Login = () => <button>Login</button>; const MyComponent = () => { const [isLoggedIn, setIsLoggedIn] = useState(false); return isLoggedIn ? <Welcome /> : <Login />; };
If you're rendering a list of items, conditional rendering can be used to selectively render certain elements in the list.
import React, { useState } from "react"; const MyComponent = () => { const [isLoggedIn, setIsLoggedIn] = useState(false); if (isLoggedIn) { return <h1>Welcome back!</h1>; } else { return <button onClick={() => setIsLoggedIn(true)}>Login</button>; } };
In many cases, you'll conditionally render elements based on the results of API calls or asynchronous data fetching. This can be done using state and side effects with useEffect.
import React, { useState } from "react"; const MyComponent = () => { const [isLoggedIn, setIsLoggedIn] = useState(false); return ( <> {isLoggedIn ? ( <h1>Welcome back!</h1> ) : ( <button onClick={() => setIsLoggedIn(true)}>Login</button> )} </> ); };
Conditional rendering is a fundamental concept in React that enables you to display different UI elements based on the state or props. By using techniques such as if, ternary operators, && operators, or even functions, you can dynamically adjust what your components render. Proper conditional rendering helps improve user experience by displaying appropriate content based on the app’s state or user interaction.
The above is the detailed content of Conditional Rendering in React: Dynamically Rendering UI Elements. For more information, please follow other related articles on the PHP Chinese website!