Тема: Логіка умовного відображення
Мета: Навчитися створювати динамічні інтерфейси, які змінюють свій вигляд залежно від стану додатка; опанувати використання логічних операторів (&&), тернарних операторів та складніших конструкцій для реалізації табів (вкладок) та перемикачів.
Необхідні інструменти: Проєкт, розроблений на попередніх заняттях (Vite + React), редактор коду (VS Code).
&&)Ми продовжуємо розвивати наш додаток. На цьому етапі ми навчимося не просто виводити списки, а керувати їх видимістю та перемикатися між різними представленнями даних.
Перед початком роботи створіть нову гілку, щоб зберегти історію розробки:
git checkout -b feature/conditional-rendering
&&)Найпростіший спосіб показати або приховати елемент у React — логічний оператор «І» (&&). Якщо ліва частина істинна, React відрендерить праву частину.
Завдання: Додати кнопку, яка показує або ховає коротку довідку про програму.
У компоненті App.jsx створіть стан showHelp за допомогою useState (за замовчуванням false).
const [showHelp, setShowHelp] = useState(false);
Додайте кнопку, яка змінює цей стан на протилежний.
<button onClick={() => setShowHelp(!showHelp)}>
{showHelp ? "Приховати інструкцію" : "Показати інструкцію"}
</button>
Використовуйте конструкцію &&:
{
showHelp && <p>Довідка: Дозволяє керувати списками студентів.</p>;
}
Тернарний оператор ідеально підходить, коли у вас є два взаємовиключні стани (наприклад, “Увійти” / “Вийти” або “Список” / “Сітка”).
Завдання: Реалізувати перемикач режиму перегляду списку (повний список / тільки відфільтровані дані).
filterActive (boolean).{filterActive ? "Показати всіх" : "Показати тільки успішних"}.У блоці рендерингу списку використайте тернарний оператор, щоб вирішити, який масив мапити: filterActive ? filteredStudents : allStudents.
// Зміна кольору тексту залежно від балу
<span style=>
{student.score >= 60 ? "Зараховано" : "Незараховано"}
</span>
Для складніших випадків, коли варіантів відображення більше ніж два, використовується стан-ідентифікатор (рядок або число).
Завдання: Створити систему табів: “Всі студенти”, “Статистика”, “Про автора”.
Створіть стан activeTab зі значенням за замовчуванням 'list'.
const [activeTab, setActiveTab] = useState("list"); // default
activeTab змінюється на 'list', 'stats' або 'about'.Реалізуйте логіку відображення контенту:
<div className="content">
{activeTab === "list" && <StudentList />}
{activeTab === "stats" && <StatisticsData />}
{activeTab === "about" && <AboutAuthor />}
</div>
git add .
git commit -m "feat: add conditional rendering and tabs"
git checkout main
git merge feature/conditional-rendering
active-tab), щоб візуально виділити її серед інших.score, замість цифри виведіть текст “Оцінка відсутня” за допомогою оператора нульового злиття (??) або тернарного оператора.if/else безпосередньо всередині JSX-розмітки призведе до помилки?0 у лівій частині оператора && в JSX? (Підказка: що React виведе на екран?).&&?Створено гнучкий інтерфейс, де користувач може перемикатися між різними екранами додатка без перезавантаження сторінки, використовуючи лише внутрішній стан React-компонентів.