Тема 6. React.js Взаємодія з готовим кодом
Завдання 1
- Завдання 1
Перше завдання зв'язане з грою Хрестики-нулики(Tic-Tac-Toe). Нижче є найпростіший код гри, у вас буде декілька завдань стосовно змін та удосконалення.
1. Розділімо цей код на компоненти та файли для кожного компонента(Наприклад: Board.js, Game.js, Square.js,calculateWinner.js)
2. Добавте можливість вибору розміру поля ігроком(3х3, 4х4 і тд)
3. Добавити зміну порядку гравців(ходить О або Х), обмеження часу на кожний хід(добавити обмеження на хід 5 секунд, гра стане веселішою)
4. Стратегічні поради: Виводьте поради, які допоможуть гравцям краще розуміти ситуацію на полі та робити більш інформовані ходи.
Завдання 2
- Завдання 2
- Поради до виконання
Друге завдання зв'язане із сайтом про швидкісні машини.
Нижче будуть файли для уже готового сайту, вам необхідно створити новий додаток і запустити його через термінал/консоль.
Ви раніше використовували такі рішення як кошик товарів, гра на пам'ять, додаток вивчення мов, список справ, вікторина.
Подумайте як можна було б інтегрувати ці системи в цей сайт, і спробуйте це виконати.
Наприклад:
Кошик товарів - можна використати для вибраного сервісу замовлення додаткових послуг або товарів.
Вивчення мов - інтегрувати на сайт, для переключення між різними мовами.
Вікторина(QuizApp) - для швидкого опитування, або підбору контенту по вибору користувача.
Гра на пам'ять(Memory Game) - виконати сторінку призів зі знижками або бонусами, якщо користувачі зіграють в гру.
Виконання усіх завдань не обов'язкове. Поради для виконання:
Анімація: Додавання плавних переходів, ефектів затемнення або зміни розміру для створення привабливих та привабливих ефектів.
Слайдери і галереї: Дозвольте користувачам легко переглядати фотографії або інші візуальні матеріали за допомогою слайдерів або галерей.
Керування станом (State Management): Використовуйте локальний стан компонентів React для оновлення вмісту без перезавантаження сторінки. Наприклад, можна створити форму, яка оновлює вміст в реальному часі під час введення користувачем.
Обробка подій (Event Handling): Реагуйте на події користувача, такі як кліки, подвійні кліки, наведення курсору, інші дії мишею та клавіатурою. Це може бути використано для зміни вмісту, анімацій чи переходів.
Управління життєвим циклом (Lifecycle Management): Використовуйте методи життєвого циклу React, такі як
componentDidMount
,componentDidUpdate
,componentWillUnmount
, для виконання певних дій під час монтажу, оновлення чи розмонтажу компонентів.Умовний рендеринг (Conditional Rendering): Використовуйте умови для визначення, коли і які компоненти мають бути відображені. Наприклад, показувати або ховати певні елементи в залежності від стану даних.
Використання роутингу (Routing): Використовуйте бібліотеку
react-router
для створення багатосторінкового додатку з використанням шляхів URL.Форми з контрольованим компонентом (Controlled Components): Створюйте форми, в яких значення елементів форми контролюються компонентами React, що дозволяє легко відстежувати та обробляти зміни.
Передача пропсів (Props Passing): Використовуйте передачу пропсів між батьківськими та дочірніми компонентами для обміну даними та оновлення вмісту компонентів.
Анімація CSS з допомогою React : Використовуйте
React
для управління класамиCSS
, що дозволяє змінювати стилі та створювати анімації відповідно до дій користувача.
import React from 'react';
export default Header;
// Footer.js
import React from 'react';
Посилання на пройдені теми
Завдання 1. Гра Хрестики-нулики
1. Створіть папку components, в ній створіть нові файли Board.js, Game.js, Square.js, calculateWinner.js Правильно імпортуйте їх.
2. У файлах вище добавлена можливість вибору розміру поля ігроком
3. Можна надати додаткові завдання якщо швидко впорались із завданням(Наприклад зміна порядку гравців, обмеження часу на кожний хід)
4. Добавлення підказок наступного ходу або порад, діти повинні реалізувати самостійно
Добавлення можливості обмеження часу на 5 секунд – змінюємо файл Board.js в ньому ми використовуємо setTimeout
у функції handleClick
, щоб встановити таймер на наступний хід після кліка гравця. Після закінчення таймеру, гравець буде змінений, і гра продовжиться. Важливо враховувати, що таймер буде встановлений на кожному кліку гравця.
Зверніть увагу, що в constructor потрібно добавити timer: null
Тепер добавимо зміну порядку гравців, функція handlePlayerChange
На забудьте добавити кнопку зміни гравця після рендерингу
<button onClick={this.handlePlayerChange}>Change Player</button>