Интерфейс загрузки файлов перетаскиванием
Создайте область перетаскивания с событиями onDragOver/onDrop и визуальной обратной связью
«Интерфейс загрузки файлов перетаскиванием» — бесплатный урок React Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.
Добро пожаловать
Обзор событий перетаскивания
Предотвращение поведения по умолчанию
const handleDragOver = (e) => {
e.preventDefault();
};
const handleDrop = (e) => {
e.preventDefault();
const files = Array.from(e.dataTransfer.files);
// process files
};Визуальное активное состояние
const [isDragging, setIsDragging] = useState(false);
<div
className={isDragging ? 'zone active' : 'zone'}
onDragOver={(e) => { e.preventDefault(); setIsDragging(true); }}
onDragLeave={() => setIsDragging(false)}
onDrop={handleDrop}
>Чтение сброшенных файлов
const handleDrop = (e) => {
e.preventDefault();
setIsDragging(false);
const files = Array.from(e.dataTransfer.files);
setSelectedFiles(files);
};Объединение с выбором по щелчку
const inputRef = useRef();
<div onClick={() => inputRef.current.click()} ...>
Drop files here or click to browse
</div>
<input
ref={inputRef}
type="file"
multiple
hidden
onChange={(e) => setSelectedFiles(Array.from(e.target.files))}
/>Отображение предварительных просмотров файлов
Удаление файлов перед загрузкой
const removeFile = (index) =>
setSelectedFiles(files => files.filter((_, i) => i !== index));Сравнение dragenter и dragover
Сторонние библиотеки
import { useDropzone } from 'react-dropzone';
const { getRootProps, getInputProps, isDragActive } = useDropzone({
onDrop: acceptedFiles => setFiles(acceptedFiles),
accept: { 'image/*': [] },
});Быстрая проверка
Итоги
Далее
Часто задаваемые вопросы
Урок «Интерфейс загрузки файлов перетаскиванием» бесплатный?
Да — полный текст урока «Интерфейс загрузки файлов перетаскиванием» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.
Чему я научусь в уроке «Интерфейс загрузки файлов перетаскиванием»?
Создайте область перетаскивания с событиями onDragOver/onDrop и визуальной обратной связью Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать React Academy?
Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Интерфейс загрузки файлов перетаскиванием»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке React Academy?
Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Неконтролируемые поля ввода с useRef
- Поле выбора файла и чтение данных файла
- Интерфейс загрузки файлов перетаскиванием
- Загрузка файлов в серверный API