javascript - 反应隐藏的输入类型文件 onChange 不触发
问题描述
const passFromPicToUpload = (e) =>{
hiddenFileInput.current.click();
console.log("one")
}
const handleProfilePicUpload = (e) =>{
console.log("two")
if(e.target.files[0]){
setImage(e.target.files[0]);
}
}
return (
<div className="profile">
<div className="imageContainer" >
<a href="#" onClick={passFromPicToUpload}>
{
profile.avatarUrl?<Image src={profile.avatarUrl} className="profile__image" /> :<Image src="https://i.stack.imgur.com/l60Hf.png" className="profile__image" />
}
</a>
</div>
<input type="file" ref={hiddenFileInput} onChange={handleProfilePicUpload} style={{display:'none'}} />
</div>
)
所以基本上文件选择窗口正在显示,但是在我选择图片后,“handleProfilePicUpload”没有触发。
解决方案
您试图onChange
按click
事件进行模拟。将侦听器更改为onClick
:
<input onClick={handleProfilePicUpload} .. />
更清洁的解决方案是使用标签:
<input type="file" id="file" style="display:none;">
<label for="file">
<a>Image</a>
</label>
推荐阅读
- node.js - 如何解决 react js 安装问题
- hadoop - 使用 Phoenix 处理程序创建 Hive 表抛出 NoClassDefFoundError: org.apache.hadoop.hbase.security.SecurityInfo
- powershell - 获取 QADUser 邮箱?
- django-models - 如何使用 Django 将数据收集到数据库中?
- c# - 使用自定义力量进行弹丸射击
- animation - 近距离实时渲染地球
- r - 带有“if”条件的并行操作
- javascript - 展平嵌套对象,保留父对象的属性
- websphere-8 - 在进行从 8.5.5.13 到 8.5.5.18 的修订包升级失败并出现 CRIMA1161E 错误
- r - 给定gps坐标计算bbox的中心