Material UI (MUI) je oblíbená knihovna pro efektivní vývoj uživatelského rozhraní v aplikacích React. Při implementaci funkce nahrávání souborů se však můžete setkat s několika běžnými chybami a problémy. V tomto článku vysvětlíme běžné chyby a jejich řešení při nahrávání souborů s Material UI.
Pokud spolupracujete s React Hook Form, může se state formuláře po výběru souboru neaktualizovat a zůstat tak validační chyba.
Řešení: Výslovně nastavte hodnoty pomocí funkce 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);
};
Řešení: Určete component="label"
pro komponentu Button
.
<Button variant="contained" component="label">
Vyberte soubor
<input type="file" hidden onChange={handleFileChange} />
</Button>
accept
je ignorovánŘešení: Použijte nativní element input
nebo upravte atributy tak, aby se projevily.
<input type="file" accept=".jpg,.png" onChange={handleFileChange} />
Řešení: Přidejte validaci pomocí JavaScriptu.
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('Soubor je příliš velký.');
return;
}
if (!allowedExtensions.includes(fileExtension)) {
alert('Neschválený formát souboru.');
return;
}
// Zpracování, pokud soubor splňuje podmínky
};
setValue
při použití MuiFileInput
?component="label"
pro Button
?accept
pro element input
?Mezi užitečné nástroje pro testování a demonstraci funkce nahrávání souborů patří UploadF.
Při implementaci funkce nahrávání souborů pomocí Material UI se mohou vyskytnout různé chyby, ale pokud se budete řídit obsahem tohoto článku a správně reagovat, budete moci plynule pokračovat ve vývoji.