ප්‍රධාන අන්තර්ගතයට පනින්න

Return Values Reference

useDropup hook මගින් return වන සියල්ල.

දළ විසඳුම​

const {
files, // ගොනු objects array
state, // වත්මන් state
actions, // ලබා ගත හැකි actions
getDropProps, // Drop zone සඳහා props
getInputProps, // Input element සඳහා props
openFileDialog, // File picker විවෘත කරන්න
} = useDropup();

files​

එකතු කළ සියලුම ගොනු නියෝජනය කරන DropupFile objects array.

const { files } = useDropup();

files.forEach(file => {
console.log(file.id); // "abc123"
console.log(file.name); // "photo.jpg"
console.log(file.size); // 1234567
console.log(file.type); // "image/jpeg"
console.log(file.status); // "idle" | "uploading" | "complete" | "error"
console.log(file.progress); // 0-100
console.log(file.preview); // "blob:http://..." (images පමණි)
console.log(file.uploadedUrl); // "https://..." (upload පසුව)
console.log(file.error); // DropupError (අසාර්ථක නම්)
});

DropupFile Properties​

PropertyTypeවිස්තරය
idstringඅනන්‍ය හඳුනාගැනීම
fileFileමුල් browser File object
namestringගොනු නාමය
sizenumberBytes වලින් ප්‍රමාණය
typestringMIME type
statusFileStatusවත්මන් status
progressnumberUpload progress (0-100)
previewstring | undefinedImages සඳහා Preview URL
uploadedUrlstring | undefinedසාර්ථක upload පසු URL
responseunknownServer response data
errorDropupError | undefinedUpload අසාර්ථක නම් Error
metaRecord<string, unknown>Custom metadata

FileStatus අගයන්​

Statusවිස්තරය
'idle'ගොනුව එකතු විය, upload නැත
'uploading'Upload සිදුවෙමින්
'complete'Upload සාර්ථකයි
'error'Upload අසාර්ථකයි
'paused'Upload විරාම කළා (resumable uploads)

state​

Dropzone හි වත්මන් state.

const { state } = useDropup();

console.log(state.isDragging); // drag වෙමින් ඇති විට true
console.log(state.isDragAccept); // drag කළ ගොනු වලංගු විට true
console.log(state.isDragReject); // drag කළ ගොනු අවලංගු විට true
console.log(state.isUploading); // ගොනු upload වෙමින් ඇති විට true
console.log(state.progress); // සමස්ත progress 0-100
console.log(state.status); // 'idle' | 'uploading' | 'complete' | 'error'

State Properties​

PropertyTypeවිස්තරය
isDraggingbooleanDrop zone උඩින් ගොනු drag වෙමින්
isDragAcceptbooleanDrag කළ ගොනු validation pass කරයි
isDragRejectbooleanDrag කළ ගොනු validation fail කරයි
isUploadingbooleanගොනුවක් upload වෙමින්
progressnumberසියලුම ගොනුවල සාමාන්‍ය progress (0-100)
statusDropupStatusසමස්ත upload status

DropupStatus අගයන්​

Statusවිස්තරය
'idle'Uploads සිදුවෙමින් නැත
'uploading'එකක් හෝ වැඩි ගොනු upload වෙමින්
'complete'සියලුම uploads සාර්ථකව අවසන්
'error'එකක් හෝ වැඩි uploads අසාර්ථක

actions​

ලබා ගත හැකි සියලුම actions අඩංගු object.

const { actions } = useDropup();

// Uploads ආරම්භ කරන්න
actions.upload(); // සියලුම idle ගොනු upload කරන්න
actions.upload(['id1', 'id2']); // නිශ්චිත ගොනු upload කරන්න

// Uploads අවලංගු කරන්න
actions.cancel(); // සියලුම uploads අවලංගු කරන්න
actions.cancel('file-id'); // නිශ්චිත ගොනුව අවලංගු කරන්න

// ගොනු ඉවත් කරන්න
actions.remove('file-id'); // නිශ්චිත ගොනුව ඉවත් කරන්න
actions.reset(); // සියලුම ගොනු ඉවත් කරන්න

// අසාර්ථක uploads නැවත උත්සාහ කරන්න
actions.retry(); // අසාර්ථක සියල්ල නැවත උත්සාහ කරන්න
actions.retry(['id1']); // නිශ්චිත ගොනු නැවත උත්සාහ කරන්න

// Programmatically ගොනු එකතු කරන්න
actions.addFiles(fileList); // File[] හෝ FileList එකතු කරන්න

// File metadata යාවත්කාලීන කරන්න
actions.updateFileMeta('file-id', { tag: 'important' });

Action Methods​

upload(fileIds?)​

ගොනු upload ආරම්භ කරන්න.

// සියලුම idle ගොනු upload කරන්න
actions.upload();

// නිශ්චිත ගොනු upload කරන්න
actions.upload(['file-id-1', 'file-id-2']);
ParameterTypeවිස්තරය
fileIdsstring[] (විකල්ප)Upload කළ යුතු නිශ්චිත file IDs

cancel(fileId?)​

සිදුවෙමින් පවතින uploads අවලංගු කරන්න.

// සියලුම uploads අවලංගු කරන්න
actions.cancel();

// නිශ්චිත ගොනුව අවලංගු කරන්න
actions.cancel('file-id');
ParameterTypeවිස්තරය
fileIdstring (විකල්ප)අවලංගු කළ යුතු නිශ්චිත file ID

remove(fileId)​

ලැයිස්තුවෙන් ගොනුවක් ඉවත් කරන්න.

actions.remove('file-id');
ParameterTypeවිස්තරය
fileIdstringඉවත් කළ යුතු File ID

reset()​

සියලුම ගොනු ඉවත් කර state reset කරන්න.

actions.reset();

retry(fileIds?)​

අසාර්ථක uploads නැවත උත්සාහ කරන්න.

// අසාර්ථක සියල්ල නැවත උත්සාහ කරන්න
actions.retry();

// නිශ්චිත ගොනු නැවත උත්සාහ කරන්න
actions.retry(['file-id-1']);
ParameterTypeවිස්තරය
fileIdsstring[] (විකල්ප)නැවත උත්සාහ කළ යුතු නිශ්චිත file IDs

addFiles(files)​

Programmatically ගොනු එකතු කරන්න.

// Clipboard එකෙන්
document.addEventListener('paste', (e) => {
const files = e.clipboardData?.files;
if (files) {
actions.addFiles(files);
}
});

// වෙනත් මූලාශ්‍රයකින්
actions.addFiles([file1, file2]);
ParameterTypeවිස්තරය
filesFile[] | FileListඑකතු කළ යුතු ගොනු

updateFileMeta(fileId, meta)​

File metadata යාවත්කාලීන කරන්න.

actions.updateFileMeta('file-id', {
description: 'මගේ ඡායාරූපය',
tags: ['නිවාඩු', '2024'],
});
ParameterTypeවිස්තරය
fileIdstringයාවත්කාලීන කළ යුතු File ID
metaRecord<string, unknown>ඒකාබද්ධ කළ යුතු Metadata

getDropProps​

Drop zone element එක මත spread කළ යුතු props return කරයි.

const { getDropProps, getInputProps } = useDropup();

<div {...getDropProps()}>
<input {...getInputProps()} />
ගොනු මෙතැනට දමන්න
</div>

Custom Props සමඟ​

<div
{...getDropProps({
className: 'my-dropzone',
onClick: (e) => {
// ඔබගේ custom click handler
console.log('Click විය!');
},
})}
>
<input {...getInputProps()} />
</div>

Returned Props​

PropertyTypeවිස්තරය
onDragEnterfunctionDrag enter handler
onDragOverfunctionDrag over handler
onDragLeavefunctionDrag leave handler
onDropfunctionDrop handler
onClickfunctionClick handler (dialog විවෘත කරයි)
rolestringAccessibility role
tabIndexnumberFocus සඳහා tab index

getInputProps​

සැඟවුණු file input මත spread කළ යුතු props return කරයි.

const { getInputProps } = useDropup();

<input {...getInputProps()} />

Custom Props සමඟ​

<input
{...getInputProps({
id: 'file-input',
name: 'files',
})}
/>

Returned Props​

PropertyTypeවිස්තරය
type'file'Input type
acceptstringපිළිගන්නා ගොනු වර්ග
multiplebooleanබහු ගොනු අවසර දෙන්න
onChangefunctionChange handler
styleobjectසැඟවීමේ styles

openFileDialog​

File picker programmatically විවෘත කිරීමේ function.

const { openFileDialog } = useDropup();

<button onClick={openFileDialog}>
ගොනු Browse කරන්න
</button>

භාවිත උදාහරණ​

සම්පූර්ණ File List​

function FileList() {
const { files, actions, state } = useDropup({
upload: { url: '/api/upload' },
});

return (
<div>
<h3>ගොනු ({files.length})</h3>

{files.map(file => (
<div key={file.id}>
{file.preview && (
<img src={file.preview} alt="" width={50} />
)}
<span>{file.name}</span>
<span>{(file.size / 1024).toFixed(1)} KB</span>
<span>{file.status}</span>

{file.status === 'uploading' && (
<progress value={file.progress} max={100} />
)}

{file.status === 'error' && (
<>
<span style={{ color: 'red' }}>{file.error?.message}</span>
<button onClick={() => actions.retry([file.id])}>නැවත උත්සාහ</button>
</>
)}

<button onClick={() => actions.remove(file.id)}>ඉවත් කරන්න</button>
</div>
))}

{state.isUploading && (
<p>උඩුගත වෙමින්... {state.progress}%</p>
)}

<button
onClick={() => actions.upload()}
disabled={state.isUploading || files.length === 0}
>
සියල්ල Upload කරන්න
</button>

<button onClick={() => actions.reset()}>
සියල්ල හිස් කරන්න
</button>
</div>
);
}

Drag State Styling​

function StyledDropzone() {
const { state, getDropProps, getInputProps } = useDropup({
accept: 'image/*',
});

const getStyle = () => {
if (state.isDragAccept) return { borderColor: 'green', backgroundColor: '#e8f5e9' };
if (state.isDragReject) return { borderColor: 'red', backgroundColor: '#ffebee' };
if (state.isDragging) return { borderColor: 'blue', backgroundColor: '#e3f2fd' };
return { borderColor: 'gray', backgroundColor: 'white' };
};

return (
<div
{...getDropProps()}
style={{
border: '2px dashed',
borderRadius: 8,
padding: 40,
textAlign: 'center',
transition: 'all 0.2s',
...getStyle(),
}}
>
<input {...getInputProps()} />
{state.isDragReject ? (
<p>Images පමණක් පිළිගනී!</p>
) : (
<p>Images මෙතැනට දමන්න</p>
)}
</div>
);
}