Sobes.tech
Junior

Jak wyrenderować komponent w zależności od warunku?

sobes.tech AI

Odpowiedź od AI

Zazwyczaj stosuje się następujące podejścia:

  • Renderowanie warunkowe za pomocą operatora ternarnego lub if: Najprostszy sposób.

    // Przykład z operatorem ternarnym w React
    functionjKomponent({ jestZalogowany }) {
      return (
        <div>
          {jestZalogowany ? (
            <p>Cześć, użytkowniku!</p>
          ) : (
            <button>Zaloguj się</button>
          )}
        </div>
      );
    }
    
    // Przykład z if wewnątrz komponentu funkcyjnego
    function InnyKomponent({ wLadowaniu }) {
      if (wLadowaniu) {
        return <p>Ładowanie...</p>;
      }
      return <h1>Dane załadowane!</h1>;
    }
    
  • Operator logiczny AND (&&): Przydatny, gdy chcesz wyświetlić komponent tylko wtedy, gdy warunek jest prawdziwy.

    // Przykład z && w React
    function Wiadomości({ liczba }) {
      return (
        <div>
          {liczba > 0 && <p>Masz {liczba} nowych wiadomości.</p>}
        </div>
      );
    }
    
  • Użycie funkcji i komponentów potomnych: Pozwala wyodrębnić logikę renderowania do osobnych funkcji lub komponentów dla lepszej czytelności i ponownego użycia.

    // Przykład z funkcją w React
    function renderujZawartosc(rangaUzytkownika) {
      if (rangaUzytkownika === 'admin') {
        return <PanelAdmin />;
      } else if (rangaUzytkownika === 'uzytkownik') {
        return <ProfilUzytkownika />;
      }
      return <StronaLogowania />;
    }
    
    function App({ rangaUzytkownika }) {
      return (
        <div>
          {renderujZawartosc(rangaUzytkownika)}
        </div>
      );
    }
    
  • Tablice i metoda map: Do wyświetlania listy komponentów na podstawie danych.

    // Przykład z map w React
    function ListaElementów({ elementy }) {
      return (
        <ul>
          {elementy.map(element => (
            <li key={element.id}>{element.nazwa}</li>
          ))}
        </ul>
      );
    }
    
  • CSS display / visibility: Ukrywa lub pokazuje element, ale komponent nadal jest renderowany. Nadaje się do prostych przypadków, gdy stan nie wpływa na strukturę DOM.

    /* Przykład CSS */
    .ukryj {
      display: none;
    }
    
    // Przykład zastosowania klasy CSS w React
    function UkrywalnaZawartosc({ jestWidoczny }) {
      return (
        <div className={jestWidoczny ? '' : 'ukryj'}>
          <p>Ta zawartość jest ukryta.</p>
        </div>
      );
    }
    

Wybór metody zależy od złożoności warunku i struktury komponentu. Dla prostych warunków często wystarczy operator ternarny lub &&. Dla bardziej złożonych scenariuszy i lepszej organizacji kodu zaleca się użycie osobnych funkcji lub komponentów. Używaj CSS display / visibility ostrożnie, jeśli nie chcesz całkowicie usuwać elementu z DOM.