Material UI (MUI) to popularna biblioteka służąca do efektywnego rozwoju UI w aplikacjach React. Jednak implementacja funkcji przesyłania plików może napotkać kilka powszechnych błędów i problemów. W tym artykule dokładnie opisujemy ogólne błędy przesyłania plików przy użyciu Material UI oraz sposoby ich naprawienia.
W przypadku współpracy z React Hook Form, po wyborze pliku wartości formularza mogą nie być aktualizowane, co prowadzi do pozostałych błędów walidacji.
Rozwiązanie: Ustaw wartości jawnie za pomocą funkcji setValue
.
import { useForm } from 'react-hook-form';
const { register, setValue, handleSubmit, formState: { errors } } = useForm();
const handleFileChange = (event) => {
const file = event.target.files[0];
setValue('uploadFile', file);
};
Rozwiązanie: Wskaź component="label"
dla komponentu Button
.
<Button variant="contained" component="label">
Wybierz plik
<input type="file" hidden onChange={handleFileChange} />
</Button>
accept
jest ignorowanyRozwiązanie: Użyj natywnego elementu input
lub upewnij się, że atrybuty są odzwierciedlane.
<input type="file" accept=".jpg,.png" onChange={handleFileChange} />
Rozwiązanie: Dodaj walidację w JavaScript.
const handleFileChange = (event) => {
const file = event.target.files[0];
const maxSize = 2 * 1024 * 1024; // 2MB
const allowedExtensions = ['jpg', 'png'];
const fileExtension = file.name.split('.').pop().toLowerCase();
if (file.size > maxSize) {
alert('Rozmiar pliku jest zbyt duży.');
return;
}
if (!allowedExtensions.includes(fileExtension)) {
alert('Typ pliku nie jest dozwolony.');
return;
}
// Obsługuje przypadek, gdy plik spełnia warunki
};
setValue
przy użyciu MuiFileInput
?component="label"
dla Button
?accept
elementu input
działa poprawnie?Jednym z przydatnych narzędzi do testowania i demonstrowania funkcji przesyłania plików jest UploadF.
Podczas implementacji funkcji przesyłania plików przy użyciu Material UI mogą wystąpić różne błędy, ale jeśli skorzystasz z treści zawartych w tym artykule i poprawnie je rozwiążesz, z pewnością będziesz mógł kontynuować rozwój bezproblemowo.