Material UI (MUI) là một thư viện phổ biến giúp tăng hiệu quả phát triển UI cho ứng dụng React. Tuy nhiên, khi triển khai chức năng tải file, bạn có thể gặp phải một số lỗi và sự cố thông thường. Bài viết này sẽ giải thích về các lỗi thông thường khi tải file bằng Material UI và cách khắc phục chúng.
Khi làm việc với React Hook Form, có thể giá trị của biểu mẫu không được cập nhật sau khi chọn file, dẫn đến lỗi xác thực vẫn tồn tại.
Cách khắc phục: Thiết lập giá trị một cách rõ ràng bằng cách sử dụng hàm 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);
};
Cách khắc phục: Chỉ định component="label"
cho Button
component.
<Button variant="contained" component="label">
Chọn file
<input type="file" hidden onChange={handleFileChange} />
</Button>
accept
bị bỏ quaCách khắc phục: Sử dụng phần tử input
gốc hoặc đảm bảo thuộc tính được phản ánh đúng.
<input type="file" accept=".jpg,.png" onChange={handleFileChange} />
Cách khắc phục: Thêm xác thực bằng 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('Kích thước file quá lớn.');
return;
}
if (!allowedExtensions.includes(fileExtension)) {
alert('Định dạng file không được phép.');
return;
}
// Xử lý khi file thỏa mãn điều kiện
};
setValue
khi sử dụng MuiFileInput
component="label"
cho Button
chưa?accept
của phần tử input
có hoạt động đúng không?Có một công cụ hữu ích cho việc thử nghiệm và trình diễn chức năng tải file là UploadF.
Khi triển khai chức năng tải file bằng Material UI, có thể xảy ra nhiều lỗi khác nhau, nhưng nếu bạn tham khảo nội dung bài viết này và xử lý đúng cách, bạn sẽ có thể tiếp tục phát triển một cách suôn sẻ.