javascript - 反应文件输入onChange不改变图片?
问题描述
我从用户那里获得了特定商店的缩略图。单击文件浏览按钮并打开图像时,这将为给定商店设置缩略图;但是,我还在缩略图的右上角添加了一个小 x 按钮,其实际用途是删除这张图片并添加一张新图片。我面临的主要问题是当我选择缩略图时,当我单击 x 按钮时,它会删除图像,但如果我选择相同的绘制图像,它不会将其添加为缩略图。所以我必须选择一个不同的图像来选择旧的。
import thumbnail from "../../../../Assets/thumbnail.png";
import deleteicon from "../../../../Assets/close.svg";
const thumbimage = dataType64toFile(thumbnail);
const [image, setImage] = useState(thumbimage);
const [filename, setFileName] = useState("Upload Image");
const [picture, setPicture] = useState(thumbnail);
const [close, setClose] = useState(false);
{close && (
<img
src={deleteicon}
alt="Delete Thumbnail"
className="thumbnail-close"
onClick={() => {
setImage(thumbimage);
setPicture(thumbnail);
setFileName("Upload Image");
setClose(false);
}}
/>
)}
<Form.File
type="file"
label={filename}
onChange={(e) => {
setImage(e.target.files[0]);
setFileName(e.target.files[0].name);
setPicture(URL.createObjectURL(e.target.files[0]));
setClose(true);
}}
custom
/>
解决方案
我最近创建了相同的图像库,但我的方法涉及到我的组件外部的自定义挂钩文件,即我只是将我所有的 useStates 和处理程序函数放在外面并从那里导入它。
- 首先是一个调整,不要使用
const [close, setClose] = useState(false);
而不是检查 usingimage
。 - 当您单击删除图标时,将您的文件和图像设置为空
- 关于缩略图和其他不要设置 em!instead place the icon in the container and when an image is selected let it cover it!
推荐阅读
- prolog - Prolog,生成无限序列时如何限制“生成和测试”
- excel - 多个逗号分隔的行到列
- python - Python Selenium ---如何支持Gmail在一个标签下撰写多条新消息,自定义主题和正文内容(Gmail)
- c++ - 我必须在 C++ 中使用标志吗?
- javascript - firebase 多路径更新
- swift - 可以通过 opener 属性链接两个 WKWebView 吗?
- ruby-on-rails - 这些创作方式的区别?Ruby on Rails
- teststack - 无法使用测试堆栈单击窗口中的按钮或填充文本框
- javascript - 函数中的 if / else 语句
- angular - Nativescript - 类型“ImageAsset”上不存在属性“getImage”