Dropzone 接受的文件过滤器

Dropzone accepted files filter

我正在尝试为 STL 文件创建文件上传。下面的代码在 onDrop 函数中工作,console.log 为所有其他文件类型和文件(如果它们是 STL 类型)显示一个空数组。所以它做了它应该做的事情。

不过行

{isDragReject && 'File type not accepted, sorry!'}

总是触发,即使是 stl 文件。这肯定会让用户感到困惑。

import React, { useCallback } from 'react';
import Dropzone, { useDropzone } from 'react-dropzone';

const FileDropzone = () => {
const maxSize = 100000000;

const onDrop = useCallback((acceptedFiles) => {
    console.log(acceptedFiles);
}, []);

const {
    isDragActive,
    getRootProps,
    getInputProps,
    isDragReject,
    acceptedFiles,
    rejectedFiles,
} = useDropzone({
    onDrop,
    accept: '.stl',
    minSize: 0,
    maxSize,
});

const isFileTooLarge =
    rejectedFiles &&
    rejectedFiles.length > 0 &&
    rejectedFiles[0].size > maxSize;

return (
    <div className="container text-center mt-5">
        <div {...getRootProps()}>
            <input {...getInputProps()} />
            {!isDragActive && 'Click here or drop a file to upload!'}
            {isDragActive && !isDragReject && "Drop it like it's hot!"}
            {isDragReject && 'File type not accepted, sorry!'}
            {isFileTooLarge && (
                <div className="text-danger mt-2">File is too large.</div>
            )}
        </div>
    </div>
);
};

export default FileDropzone;

这是一个错误,请在此处查看详细信息:https://github.com/react-dropzone/react-dropzone/issues/888

解决方案:降级到之前版本的 DropZone。