1.Создать компонент TodoList, который отображает список задач (todos), получаемый из пропсов. Каждая задача должна содержать название (title) и статус (completed).
2.Добавить кнопку Добавить задачу, которая открывает модальное окно (AddTodoModal) для добавления новой задачи.
3.Компонент AddTodoModal должен содержать форму с полем для ввода названия новой задачи и кнопками Отмена и Добавить.
4.При добавлении новой задачи, ее название должно быть добавлено в список todos, а статус должен быть установлен в false.
5.Использовать хук useMemo для оптимизации отображения списка задач. Функция для отображения списка должна быть вызвана только в случае изменения состояния компонента, связанного со списком задач.
6.Использовать хук useCallback для оптимизации обработчиков событий кнопок. Функции-обработчики должны быть созданы только один раз при монтировании компонента и использоваться повторно при каждом рендеринге.
7.Использовать хук useRef для хранения и обновления ссылки на модальное окно. Ссылка должна быть создана при монтировании компонента и очищена при размонтировании.