2️⃣Работа с изображениями
При создании колоды, помимо названия карточки мы можем добавить картинку.
Для того чтобы загружать файлы используется
input type="file"
Внесем изменения в компонент DeckDialog.tsx
export const DeckDialog = () => {
const uploadHandler = (e: ChangeEvent<HTMLInputElement>) => {
if (e.target.files && e.target.files.length) {
const file = e.target.files[0]
console.log('file: ', file)
}
}
return (
<Dialog {...dialogProps} onCancel={handleCancel} onConfirm={onSubmit} title={'Create new deck'}>
<form className={s.content} onSubmit={onSubmit}>
<input accept={'image/*'} onChange={uploadHandler} type={'file'} />
/*...*/
</form>
</Dialog>
)
}В результате мы увидим выбранный файл

Теперь данный файл нам необходимо отправить на сервер
Для этого запишем файл в локальный стейт и отправим при сабмите формы
В network мы увидим, что запрос успешно прошел, но cover пустой объект

Это значит что мы не можем просто взять и передать File. Его необходимо модифицировать
Смотрим network


И если скопировать cover и вставить в браузере, то увидим изображение 🚀
Теперь визуально отобразим полученный результат
Добавим колонку в таблицу и отбразим там картинку
Теперь картинки отображаются в таблице и при создании новой картинки, новая колода будет тображаться сразу с картинкой 🚀

По аналогии реализуем обновление картинки
Раз, два и работает обновление картинки 🚀
Удаление картинки
Удалить картинку, это значит просто ее значит обновить ее с занулением. Поэтому немножко нужно модифицировать update 1. Добавим кнопку для удаления
2. Модифицируем updateDeck
Сделаем превью, для более удобного взаимодействия
Теперь при редактировании карточки мы видим картинки 🚀
Но мы хоти еще больше. Хотим изменить картинку и сразу увидеть ее превью. Делаем следующее
Теперь при добавлении и редактировании картинки мы сразу видим результат.
Удаление картинки
Сейчас при удалении картинки мы сабмитим форму. А давайте тоже просто будем убирать картинки, а сабмититть потом.
Кнопку удаления давайте показывать не всегда, а только когда у нас есть картинка
Сделали большую работу 🚀
Last updated