Старт и стоп
Пора за проект! В этом мини-проекте вы создадите секундомер: он измеряет время в десятых долях секунды, останавливается и запускается снова, возвращается к нулю и засекает круги. Как и в прошлых мини-проектах, задание говорит, что должно делать приложение, а как это написать — решать вам. Каждое упражнение продолжает то, на чём закончилось предыдущее.
Страница. В App.jsx уже есть части секундомера, которые пока ничего не делают: время 0.0 в абзаце с классом time и кнопка «Старт».
Задача. Щелчок по «Старт» запускает секундомер: время растёт на 0.1 каждую десятую долю секунды (0.0, 0.1, 0.2… 12.3), а на кнопке написано «Стоп». Щелчок по «Стоп» останавливает время, и на кнопке снова написано «Старт». Следующий «Старт» продолжает с того времени, на котором секундомер остановился.
Советы:
- Храните время в состоянии как целое число десятых: 123 означает 12.3 секунды. Показывайте его с помощью
(tenths / 10).toFixed(1).toFixed(1)превращает число в текст с одной цифрой после десятичной точки:(123 / 10).toFixed(1)— это"12.3", а(10 / 10).toFixed(1)—"1.0". - Работает ли секундомер — ещё одно состояние,
trueилиfalse. - Интервалу место в эффекте, который зависит от того, работает ли секундомер. Когда он не работает, эффект ничего не делает и завершается с помощью
return. Когда работает, эффект запускает интервал в 100 миллисекунд и возвращает очистку, которая его останавливает. Щелчок по «Стоп» меняет состояние, и React вызывает очистку, прежде чем снова запустить эффект.
Задание
- 1
Щелчок по «Старт» запускает время, а на кнопке написано «Стоп».
- 2
Щелчок по «Стоп» останавливает время, а на кнопке снова написано «Старт». Ещё один щелчок по «Старт» продолжает с того времени, на котором секундомер остановился.