DGo*_*mez 0 javascript image input reactjs
我有一个代码,我只上传 1 张图像并显示它,但我需要上传最多 5 张图像并能够删除它们,我不知道如何上传更多图像并能够显示它们在 img 标签中
这将是我的代码,我只能上传一张图像并显示它
import React, { useState } from "react";
import "./styles.css";
const SingleImageUploadComponent = () => {
const [file, setFile] = useState(null);
function uploadSingleFile(e) {
setFile(URL.createObjectURL(e.target.files[0]));
console.log("file", file);
}
function upload(e) {
e.preventDefault();
console.log(file);
}
return (
<form>
<div className="form-group preview">
{file && <img src={file} alt="" />}
</div>
<div className="form-group">
<input
type="file"
className="form-control"
onChange={uploadSingleFile}
/>
</div>
<button
type="button"
className="btn btn-primary btn-block"
onClick={upload}
>
Upload
</button>
</form>
);
};
export default SingleImageUploadComponent;
Run Code Online (Sandbox Code Playgroud)
正如我之前提到的,我需要上传最多 5 张图像并在 5 个 img 标签中显示它们,因为它们有我向它们显示的 css 样式
如果有人可以帮助我那就太好了,非常感谢
您可以将文件存储在数组中而不是单个文件中并使用它。
import React, { useState } from "react";
import "./styles.css";
const App = () => {
const [file, setFile] = useState([]);
function uploadSingleFile(e) {
setFile([...file, URL.createObjectURL(e.target.files[0])]);
console.log("file", file);
}
function upload(e) {
e.preventDefault();
console.log(file);
}
function deleteFile(e) {
const s = file.filter((item, index) => index !== e);
setFile(s);
console.log(s);
}
return (
<form>
<div className="form-group preview">
{file.length > 0 &&
file.map((item, index) => {
return (
<div key={item}>
<img src={item} alt="" />
<button type="button" onClick={() => deleteFile(index)}>
delete
</button>
</div>
);
})}
</div>
<div className="form-group">
<input
type="file"
disabled={file.length === 5}
className="form-control"
onChange={uploadSingleFile}
/>
</div>
<button
type="button"
className="btn btn-primary btn-block"
onClick={upload}
>
Upload
</button>
</form>
);
};
export default App;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7238 次 |
| 最近记录: |