Home > Web Front-end > JS Tutorial > Conditional Rendering in React: Dynamically Rendering UI Elements

Conditional Rendering in React: Dynamically Rendering UI Elements

Mary-Kate Olsen
Release: 2024-12-22 01:19:32
Original
484 people have browsed it

Conditional Rendering in React: Dynamically Rendering UI Elements

Conditional Rendering in React: Rendering UI Based on Conditions

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.


1. What is Conditional Rendering?

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.

Why Use Conditional Rendering?

  • To display different UI elements based on user interaction or state changes.
  • To handle edge cases like showing loading states, error messages, or empty states.
  • To toggle between different layouts or components dynamically.

2. Basic Conditional Rendering Techniques

a. Using if/else Statement

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>;
  }
};
Copy after login
Copy after login

b. Using Ternary Operator

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>
      )}
    </>
  );
};
Copy after login
Copy after login

c. Using Logical && Operator

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>}
    </>
  );
};
Copy after login

3. Conditional Rendering with Functions

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>
  );
};
Copy after login

4. Conditional Rendering with React Components

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 />;
};
Copy after login

5. Conditional Rendering Based on Array Mapping

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>;
  }
};
Copy after login
Copy after login

6. Conditional Rendering with useEffect for API Calls

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>
      )}
    </>
  );
};
Copy after login
Copy after login

7. Best Practices for Conditional Rendering

  • Keep it Simple: Avoid deeply nested conditions that make the JSX difficult to read and maintain.
  • Use Helper Functions: If you have multiple conditions, it’s often cleaner to use helper functions for rendering different parts of the UI.
  • Consider State and Props: Conditional rendering often depends on the component’s state or props. Make sure to handle edge cases such as loading states, empty data, and errors.

8. Conclusion

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!

source:dev.to
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template