问题描述
使用 react-dropzone: "11.0.3"
我有一个我认为非常基本的 dropzone 组件来上传文件的设置,但出于某种原因,我必须单击自定义 dropzone 组件两次才能显示文件查看器。有什么我遗漏的吗?
这是我的自定义 dropzone 组件:
const CSVDropzone = () => {
const onDrop = acceptedFiles => {
if (acceptedFiles.length) {
setCsverror(null);
const extPattern = /\.[0-9a-z]+$/i;
const extension = acceptedFiles[0].path.match(extPattern)[0];
if (!".json,.csv".includes(extension)) return setIsDragReject(true);
setIsDragReject(false);
setFile(acceptedFiles[0]);
if (extension === ".json") {
readJSONFile(acceptedFiles[0]);
}
}
};
const DefaultMessage = () => (
<>
<FontAwesomeIcon className="file-upload" icon={faFileUpload} />
<p>
<span className="bold">Click to upload</span> or drag file here{" "}
<span className="bold">(CSV or JSON)</span>
</p>
</>
);
const { getRootProps,getInputProps,isDragActive } = useDropzone({
onDrop,accept: [".json",".csv"],disabled: !!file || !!data || !!json
});
return (
<section
className={
data !== null
? "display-none"
: isDragReject
? "rejected"
: "drag-container"
}
>
<div
className={`dropzone ${file || data || json ? "disabled" : ""}`}
{ ...getRootProps()}
>
<input {...getInputProps()} />
{isDragReject && (
<p className="rejected">
File type is not supported. Please upload a{" "}
<span className="bold">CSV</span> or{" "}
<span className="bold">JSON</span> file
</p>
)}
{isDragActive && !isDragReject && (
<p className="bold activeDrop">Drop Here...</p>
)}
{!isDragActive && !isDragReject && <DefaultMessage />}
</div>
</section>
);
};
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)