ເລີ່ມຕົ້ນກັບ Dropup
Dropup ແມ່ນໄລບຣາຣີ React ສຳລັບການອັບໂຫຼດໄຟລ໌ທີ່ມີນ້ຳໜັກເບົາ ແລະບໍ່ມີສ່ວນຕິດຕໍ່ຜູ້ໃຊ້ສຳເລັດຮູບ ທີ່ໃຫ້ການຄວບຄຸມ UI ຢ່າງສົມບູນໃນຂະນະທີ່ຈັດການກັບຕາລະກະການອັບໂຫຼດທີ່ຊັບຊ້ອນທັງໝົດ.
ເປັນຫຍັງຕ້ອງ Dropup?
- 🪶 ນ້ຳໜັກເບົາ - ແກນຫຼັກມີພຽງ ~10KB ເມື່ອບີບອັດ
- 🎨 ບໍ່ມີສ່ວນຕິດຕໍ່ຜູ້ໃຊ້ - ຄວບຄຸມ UI ຢ່າງເຕັມທີ່ດ້ວຍ API ທີ່ອີງໃສ່ hooks
- 📁 ລາກ ແລະວາງ - ຮອງຮັບການລາກ ແລະວາງໃນຕົວ
- 📊 ຕິດຕາມຄວາມຄືບໜ້າ - ຄວາມຄືບໜ້າການອັບໂຫຼດແບບເວລາຈິງສຳລັບແຕ່ລະໄຟລ໌
- 🔄 ການອັບໂຫຼດແບບແບ່ງສ່ວນ - ແບ່ງໄຟລ໌ຂະໜາດໃຫຍ່ເພື່ອການອັບໂຫຼດທີ່ເຊື່ອຖືໄດ້
- ☁️ ພ້ອມສຳລັບຄລາວ - ຕົວຊ່ວຍສຳເລັດຮູບສຳລັບ S3, GCS, ແລະ Azure
- 🖼️ ການປຸງແຕ່ງຮູບພາບ - ການບີບອັດ ແລະການສ້າງຕົວຢ່າງໃນຕົວ
- 📱 ຂ້າມແພລດຟອມ - ເຮັດວຽກກັບ React DOM ແລະ React Native
- 🔒 TypeScript - ຮອງຮັບ TypeScript ຢ່າງເຕັມທີ່
ການຕິດຕັ້ງ
ຕິດຕັ້ງ Dropup ໂດຍໃຊ້ຕົວຈັດການແພັກເກດທີ່ທ່ານຕ້ອງການ:
npm install @samithahansaka/dropup
ການອີງອາໄສແບບ Peer
Dropup ຕ້ອງການ React 16.8 ຫຼືສູງກວ່າ (ສຳລັບການຮອງຮັບ hooks):
npm install react
ເລີ່ມຕົ້ນໄວ
ນີ້ແມ່ນຕົວຢ່າງງ່າຍໆເພື່ອເລີ່ມຕົ້ນ:
import { useDropup } from '@samithahansaka/dropup';
function FileUploader() {
const {
files,
state,
actions,
getDropProps,
getInputProps
} = useDropup({
accept: 'image/*',
maxSize: 10 * 1024 * 1024, // 10MB
multiple: true,
});
return (
<div>
{/* ພື້ນທີ່ວາງ */}
<div
{...getDropProps()}
style={{
border: state.isDragging ? '2px dashed blue' : '2px dashed gray',
padding: 40,
textAlign: 'center',
cursor: 'pointer',
}}
>
<input {...getInputProps()} />
<p>ລາກ ແລະວາງໄຟລ໌ທີ່ນີ້, ຫຼືຄລິກເພື່ອເລືອກ</p>
</div>
{/* ລາຍການໄຟລ໌ */}
<ul>
{files.map((file) => (
<li key={file.id}>
{file.name} - {file.status}
{file.status === 'uploading' && ` (${file.progress}%)`}
<button onClick={() => actions.remove(file.id)}>ລຶບ</button>
</li>
))}
</ul>
{/* ປຸ່ມອັບໂຫຼດ */}
{files.length > 0 && (
<button onClick={() => actions.upload()}>
ອັບໂຫຼດທັງໝົດ
</button>
)}
</div>
);
}
ແນວຄິດຫຼັກ
1. Hook useDropup
Hook useDropup ແມ່ນຈຸດເຂົ້າຫຼັກ. ມັນສົ່ງຄືນທຸກຢ່າງທີ່ທ່ານຕ້ອງການເພື່ອສ້າງ UI ການອັບໂຫຼດໄຟລ໌ຂອງທ່ານ:
const {
files, // ອາເຣຂອງໄຟລ໌ພ້ອມສະຖານະ, ຄວາມຄືບໜ້າ, ແລະອື່ນໆ
state, // ສະຖານະໂດຍລວມ (isDragging, isUploading, progress)
actions, // ເມທອດສຳລັບອັບໂຫຼດ, ລຶບ, ຍົກເລີກ, ຣີເຊັດ
getDropProps, // Props ສຳລັບອົງປະກອບພື້ນທີ່ວາງຂອງທ່ານ
getInputProps, // Props ສຳລັບ input ໄຟລ໌ທີ່ເຊື່ອງໄວ້
} = useDropup(options);
2. ອອບເຈັກໄຟລ໌
ແຕ່ລະໄຟລ໌ໃນອາເຣ files ປະກອບມີ:
{
id: string; // ຕົວລະບຸທີ່ບໍ່ຊ້ຳກັນ
file: File; // ອອບເຈັກ File ດັ້ງເດີມ
name: string; // ຊື່ໄຟລ໌
size: number; // ຂະໜາດໄຟລ໌ເປັນ bytes
type: string; // ປະເພດ MIME
preview?: string; // URL ຕົວຢ່າງ (ສຳລັບຮູບພາບ)
status: 'idle' | 'uploading' | 'complete' | 'error';
progress: number; // ຄວາມຄືບໜ້າການອັບໂຫຼດ (0-100)
error?: Error; // ອອບເຈັກ Error ຖ້າການອັບໂຫຼດລົ້ມເຫຼວ
uploadedUrl?: string; // URL ຫຼັງຈາກອັບໂຫຼດສຳເລັດ
}
3. Actions
ອອບເຈັກ actions ໃຫ້ເມທອດສຳລັບຄວບຄຸມການອັບໂຫຼດ:
actions.upload(fileIds?) // ເລີ່ມການອັບໂຫຼດ (ທັງໝົດ ຫຼືໄຟລ໌ສະເພາະ)
actions.cancel(fileId?) // ຍົກເລີກການອັບໂຫຼດ
actions.remove(fileId) // ລຶບໄຟລ໌ອອກຈາກລາຍການ
actions.reset() // ລ້າງໄຟລ໌ທັງໝົດ
actions.retry(fileIds?) // ລອງໃໝ່ການອັບໂຫຼດທີ່ລົ້ມເຫຼວ
ການຕັ້ງຄ່າການອັບໂຫຼດ
ເພື່ອເປີດໃຊ້ງານການອັບໂຫຼດຕົວຈິງ, ໃຫ້ການຕັ້ງຄ່າການອັບໂຫຼດ:
const { files } = useDropup({
upload: {
url: '/api/upload',
method: 'POST',
headers: {
'Authorization': 'Bearer token',
},
},
autoUpload: true, // ອັບໂຫຼດອັດຕະໂນມັດເມື່ອໄຟລ໌ຖືກເພີ່ມ
});
ຂັ້ນຕອນຕໍ່ໄປ
- ຮຽນຮູ້ກ່ຽວກັບ ຕົວເລືອກການກວດສອບ
- ເບິ່ງ ຕົວຢ່າງ ເພີ່ມເຕີມ
- ສຳຫຼວດ ການເຊື່ອມຕໍ່ກັບການເກັບຂໍ້ມູນຄລາວ
- ກວດເບິ່ງ ການອ້າງອີງ API ເຕັມຮູບແບບ