2️⃣Работа с изображениями

При создании колоды, помимо названия карточки мы можем добавить картинкуarrow-up-right.

🔗 Методичка работа с файламиarrow-up-right

  • Для того чтобы загружать файлы используется 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

  • Сделаем превью, для более удобного взаимодействия

Теперь при редактировании карточки мы видим картинки 🚀

  • Но мы хоти еще больше. Хотим изменить картинку и сразу увидеть ее превью. Делаем следующее

Теперь при добавлении и редактировании картинки мы сразу видим результат.

  • Удаление картинки

  1. Сейчас при удалении картинки мы сабмитим форму. А давайте тоже просто будем убирать картинки, а сабмититть потом.

  2. Кнопку удаления давайте показывать не всегда, а только когда у нас есть картинка

Сделали большую работу 🚀

Last updated