Material UI (MUI) je populárna knižnica na efektívny vývoj používateľského rozhrania v aplikáciách React. Pri implementácii funkcie nahrávania súborov sa však môžete stretnúť s niekoľkými bežnými chybami a problémami. V tomto článku sa podrobne zaoberáme bežnými chybami a ich riešeniami pri nahrávaní súborov pomocou Material UI.
Ak spolupracujete s React Hook Form, môže sa stať, že sa po výbere súboru hodnoty formulára neaktualizujú a zostanú zvyšné chyby validácie.
Riešenie: Explicitne nastavte hodnotu pomocou funkcie 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);
};
Riešenie: Určte component="label"
pre komponentu Button
.
<Button variant="contained" component="label">
Vybrať súbor
<input type="file" hidden onChange={handleFileChange} />
</Button>
accept
sa ignorujeRiešenie: Použite natívny element input
alebo zabezpečte, aby sa atribúty správne odrážali.
<input type="file" accept=".jpg,.png" onChange={handleFileChange} />
Riešenie: Pridajte validáciu v JavaScripte.
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('Veľkosť súboru je príliš veľká.');
return;
}
if (!allowedExtensions.includes(fileExtension)) {
alert('Nepovolený formát súboru.');
return;
}
// Spracovanie, ak sú súbor podmienky splnené
};
setValue
pri použití MuiFileInput
?component="label"
pre Button
?accept
elementu input
správne funguje?Na testovanie a demonštráciu funkcie nahrávania súborov sú užitočné nástroje ako UploadF.
Pri implementácii funkcie nahrávania súborov s použitím Material UI sa môže vyskytnúť množstvo chýb, ale ak sa riadite obsahom tohto článku a správne ich riešite, vývoj prebehne hladko.