Material UI (MUI) เป็นไลบรารีที่ได้รับความนิยมเพื่อทำให้การพัฒนา UI สำหรับแอปพลิเคชัน React มีประสิทธิภาพมากขึ้น อย่างไรก็ตาม เมื่อต้องการนำฟีเจอร์การอัปโหลดไฟล์มาใช้งาน คุณอาจต้องพบกับข้อผิดพลาดและปัญหาทั่วไปบางประการ ในบทความนี้จะอธิบายเกี่ยวกับข้อผิดพลาดทั่วไปและวิธีการจัดการเมื่อใช้ Material UI สำหรับการอัปโหลดไฟล์
ในกรณีที่ใช้งานร่วมกับ React Hook Form อาจมีการไม่อัปเดตค่าของฟอร์มหลังจากเลือกไฟล์ ซึ่งอาจทำให้มีข้อผิดพลาดการตรวจสอบความถูกต้องอยู่
วิธีจัดการ: กำหนดค่าด้วยฟังก์ชัน 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);
};
วิธีจัดการ: กำหนด component="label"
ให้กับคอมโพเนนต์ Button
<Button variant="contained" component="label">
เลือกไฟล์
<input type="file" hidden onChange={handleFileChange} />
</Button>
accept
ถูกเพิกเฉยวิธีจัดการ: ใช้ input
เอนทิตีที่เป็นนามธรรม หรือทำให้ค่าของแอตทริบิวต์ถูกแสดงผล
<input type="file" accept=".jpg,.png" onChange={handleFileChange} />
วิธีจัดการ: เพิ่มการตรวจสอบด้วย 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('ขนาดไฟล์ใหญ่เกินไป');
return;
}
if (!allowedExtensions.includes(fileExtension)) {
alert('รูปแบบไฟล์ที่ไม่อนุญาต');
return;
}
// การดำเนินการเมื่อไฟล์ตรงตามเงื่อนไข
};
setValue
ขณะใช้ MuiFileInput
component="label"
สำหรับ Button
accept
ของเอนทิตี input
ทำงานถูกต้องหรือไม่เครื่องมือที่มีประโยชน์สำหรับการทดสอบและสาธิตฟีเจอร์การอัปโหลดไฟล์ เช่น UploadF
เมื่อใช้งานฟีเจอร์การอัปโหลดไฟล์ใน Material UI อาจมีข้อผิดพลาดเกิดขึ้นได้หลายอย่าง แต่ถ้าหากคุณจัดการตามสิ่งที่กล่าวถึงในบทความนี้ จะทำให้คุณสามารถพัฒนาต่อไปได้อย่างราบรื่น