Sobes.tech
Junior

Jak vykreslit komponent v závislosti na podmínce?

sobes.tech AI

Odpověď od AI

Obvykle se používají následující přístupy:

  • Podmíněné vykreslování pomocí ternárního operátoru nebo if: Nejjednodušší způsob.

    // Příklad s ternárním operátorem v Reactu
    function MyComponent({ isLoggedIn }) {
      return (
        <div>
          {isLoggedIn ? (
            <p>Ahoj, uživateli!</p>
          ) : (
            <button>Přihlásit se</button>
          )}
        </div>
      );
    }
    
    // Příklad s if uvnitř funkčního komponentu
    function AnotherComponent({ isLoading }) {
      if (isLoading) {
        return <p>Načítání...</p>;
      }
      return <h1>Data byla načtena!</h1>;
    }
    
  • Logické AND (&&): Vhodné, když je třeba zobrazit komponentu pouze při pravdivé podmínce.

    // Příklad s && v Reactu
    function MessagesCount({ count }) {
      return (
        <div>
          {count > 0 && <p>Máte {count} nových zpráv.</p>}
        </div>
      );
    }
    
  • Použití funkcí a podkomponent: Umožňuje přesunout logiku vykreslování do samostatných funkcí nebo komponent pro lepší čitelnost a opětovné použití.

    // Příklad s funkcí v Reactu
    function renderContent(userRole) {
      if (userRole === 'admin') {
        return <AdminPanel />;
      } else if (userRole === 'user') {
        return <UserProfile />;
      }
      return <LoginPage />;
    }
    
    function App({ userRole }) {
      return (
        <div>
          {renderContent(userRole)}
        </div>
      );
    }
    
  • Pole a metoda map: Pro zobrazení seznamu komponent v závislosti na datech.

    // Příklad s map v Reactu
    function ItemsList({ items }) {
      return (
        <ul>
          {items.map(item => (
            <li key={item.id}>{item.name}</li>
          ))}
        </ul>
      );
    }
    
  • CSS display / visibility: Skrývá nebo ukazuje prvek, ale komponenta se stále vykresluje. Vhodné pro jednoduché případy, kdy stav neovlivňuje strukturu DOM.

    /* Příklad CSS */
    .hidden {
      display: none;
    }
    
    // Příklad použití CSS třídy v Reactu
    function ToggleableContent({ isVisible }) {
      return (
        <div className={isVisible ? '' : 'hidden'}>
          <p>Tento obsah je skrytý.</p>
        </div>
      );
    }
    

Volba metody závisí na složitosti podmínky a struktuře komponenty. Pro jednoduché podmínky často stačí ternární operátor nebo &&. Pro složitější scénáře a lepší organizaci kódu se doporučuje používat samostatné funkce nebo komponenty. Použití CSS display / visibility je třeba provádět opatrně, pokud je nutné úplně odstranit prvek z DOM.