javascript - 下一个/图像不适用于 react-dropzone-component
问题描述
我曾经next/image
显示图像和react-dropzone-component
上传文件。
next/image
适用于其他图像,但在预览模板中,图像不显示。我该如何解决这个问题?
import React, { Component } from "react";
import Image from "next/image";
import DropzoneComponent from "react-dropzone-component";
import "../../../node_modules/react-dropzone-component/styles/filepicker.css";
import "../../../node_modules/dropzone/dist/min/dropzone.min.css";
import "./ResumeUpload.scss";
const ReactDOMServer = require("react-dom/server");
const filetypes = ["doc", "pdf", "docx", "rtf", "txt"];
export default class ResumeUpload extends Component {
myDropzone = null;
state = {
fileSizeErrorMsg: "File size exceeds 20mb",
fileTypeErrorMsg: "File type not supported",
fileSizeError: false,
fileTypeError: false,
iconImage: "resume_upload.png",
isError: false,
fileName: "",
isLoading:false
};
componentDidMount=()=> {
this.props.onRef(this);
}
componentWillReceiveProps=(nextProps)=>{
if(this.props!==nextProps){
this.setState({
isLoading:nextProps.isLoading
})
}
}
initCallback = (dropzone) => {
this.mydropzone = dropzone;
};
removeFileFromDropzone = (file) => {
if (this.mydropzone) {
this.mydropzone.removeAllFiles();
}
};
handleDroppedFile = (file) => {
let checkDocType = filetypes.includes(file.name.split(".").pop());
if (checkDocType) {
if(file && file.size <= 20971520){
this.setState(
{
fileName: file.name,
},
() => {
this.props.addFile(file);
}
);
} else {
this.removeFileFromDropzone();
this.setState({
fileName: file.name,
iconImage: "resume_error.png",
fileSizeError: true,
isError: true,
});
}
} else {
this.removeFileFromDropzone();
this.setState({
fileName: file.name,
iconImage: "resume_error.png",
fileTypeError: true,
isError: true,
});
}
};
setDropzone = () => {
this.setState({
isError: false,
iconImage: "resume_upload.png",
});
};
render() {
let {
fileSizeError,
fileTypeError,
fileSizeErrorMsg,
fileTypeErrorMsg,
iconImage,
isError,
} = this.state;
var componentConfig = {
iconFiletypes: [".doc", ".pdf", ".docx", ".rtf", ".txt"],
showFiletypeIcon: false,
postUrl: "no-url",
};
let djsConfig = {
previewTemplate: ReactDOMServer.renderToStaticMarkup(
<div className="dz-preview dz-file-preview">
<div className="custom-dropzone-message">
<div className="dropzone-img">
<Image className="image-tag" src={"/static/assets/images/resume_success.png"} layout="fill"/>
</div>
<div className="dropzone-message">
<div className="file-name">
<span data-dz-name></span>
</div>
<div className="message">
<div className="success">Successfully uploaded </div>
<div className="remove" data-dz-remove>
remove
</div>
</div>
</div>
</div>
</div>
),
autoProcesQueue: false,
maxFiles: 1,
acceptedFiles: ".doc, .pdf,.docx,.rtf,.txt",
// addRemoveLinks: true,
// dictRemoveFile: "Remove",
// dictDefaultMessage:
// "drag and drop pdf, jpeg, or bmp files, or click here",
};
var eventHandlers = {
init: this.initCallback,
addedfile: (file) => this.handleDroppedFile(file),
};
return (
<React.Fragment>
{isError && (
<div className="row">
<div className="col-md-12">
<div className="error-mes-card">
<div className="error-mes-section">
<div className="error-img">
<Image className="image-tag" src={`/static/assets/images/${iconImage}`} layout="fill"/>
</div>
<div className="error-msg">
Something went wrong
<br />
{fileTypeError && (
<div className="error">
{fileTypeErrorMsg && fileTypeErrorMsg}
</div>
)}
{fileSizeError && (
<div className="error">
{fileSizeErrorMsg && fileSizeErrorMsg}
</div>
)}
<div className="try-again" onClick={this.setDropzone}>
try again
</div>
</div>
</div>
</div>
</div>
</div>
)}
{!isError && (
<div className="row">
<div className="col-md-12">
<DropzoneComponent
config={componentConfig}
eventHandlers={eventHandlers}
djsConfig={djsConfig}
>
<div className="dz-message" data-dz-message>
<div className="custom-dropzone-message">
<div className="dropzone-img">
<Image className="image-tag" src={`/static/assets/images/${iconImage}`} layout="fill"/>
</div>
<div className="dropzone-message">
{this.props.dropzoneMsg}
</div>
</div>
</div>
</DropzoneComponent>
</div>
</div>
)}
</React.Fragment>
);
}
}
解决方案
推荐阅读
- loops - Go 模板中的嵌套循环
- testing - 下载文件在 Cypress 中挂起
- java - 节俭的通信错误不会被 promise reject 或 cath 捕获
- regex - 正则表达式字符串不以正斜杠开始或结束(或两者)
- python - 通过 Looping Python 提取子页面链接
- python - 无法在 Windows 10 上通过“pip”安装任何包,Python 中的 ssl 模块不可用
- c++ - 事件系统:回调或事件队列
- javascript - styles.xml 破坏受密码保护的 XSSFWorkbook (Apache POI v3.16) 保存过程
- apache-kafka - 无法写入卡夫卡,经纪人倒闭
- flutter - Flutter 应用程序的推荐设计模式是什么?