reactjs - 无需外部库即可进行 React Drag and Drop
问题描述
我试图在不使用任何外部依赖项或插件的情况下使用正常的反应代码查找文件上传。
任何人都可以帮我解决拖放文件上传的问题。任何小提琴将不胜感激
我刚刚尝试了正常的文件上传并增加了填充
<input type="file" className="inputFile" name="file" onChange={(e)=>this.props.onChangeHandler(event)} />
和CSS作为
.inputFile {
left: 29%;
padding: 10px 159px 433px 0px;
position: absolute;
opacity: 0;
}
现在我有了该区域,但是在拖放时 onChange 没有被触发这是我的反应代码
onChangeHandler(event){
this.setState({
selectedFile: event.target.files[0]
});
this.onClickHandler();
};
onClickHandler = () => {
const data = new FormData();
data.append("file", this.state.selectedFile);
axios
.post("http://localhost:8080/api/assetlibrary/ms/upload", data, {
onUploadProgress: ProgressEvent => {
this.setState({
//loaded: 100
loaded: (ProgressEvent.loaded / ProgressEvent.total) * 100
});
}
})
.then(res => {
this.setState({
warningToast:true
})
setTimeout(() => {this.setState({warningToast:false})},5000);
});
};
谁能帮我整理一下为什么 onChange 没有在拖放时触发。任何工作的小提琴都将受到高度赞赏。
注意:请不要有任何外部反应依赖/插件
解决方案
你做得很好,但你应该使用onDrop()
合成事件而不是onChange()
.
这将做:
<input
type="file"
className="inputFile"
name="file"
onDrop={e => this.props.onChangeHandler(event)}
/>
在这里你有一个小提琴来测试它:
推荐阅读
- php - PHP 7.1.14 APCu 在 Mac OSX High Sierra 中不工作
- python - 获取命令的退出代码
- java - Hibernate TableGenerator.getNextValue 在当前事务上调用挂起
- java - 通过 servlet/java 从 ajax 调用从 ftp 位置下载多个文件
- regex - 正则表达式匹配大于十进制值的数字
- php - WordPress中@opendir中的@字符有什么用
- r - 错误:“闪亮”的包或命名空间加载失败:部署闪亮的应用程序时
- c# - 为什么 Resharper 在方法打开大括号后会断线以及如何防止它?
- mesh - 使用 Paraview 在 3D 域中显示 2D 单元格数据字段
- scripting - 我们如何使用脚本在windbg下递归搜索结构中的变量值