【发布时间】:2020-03-11 20:10:16
【问题描述】:
我正在尝试选择多张图像,并且图像正在被选择和存储状态,但只显示一张图像。下面是相同的代码
//选择图片并显示图片
<div className="md-form mb-5">
<input type="file" id="form29" name='images' onChange={e => pickImage(e)} className="form-control validate" multiple hidden/>
<button className="btn btn-outline-dark btn-sm" onClick={e => selectImage(e)}>Pick Image</button>
</div>
<div className="row text-center">
{image.length > 0 ?
image.map(img => (
<div className="col-md-4" key={img.url}>
<img src={img.url} alt={img.name} className="img-fluid"/>
<span style={{cursor: 'pointer'}}>
<i class="far fa-trash-alt" onClick={e => deleteImage(img.name, e)}></i>
</span>
</div>
)) : <p>No Images Picked</p>}
</div>
//定义状态
const [addDiary, setAddDiary] = useState({date: null, content: null, images: []});
const [ image, setImage ] = useState([]);
//定义图片的存储和删除方法
const selectImage = (e) => {
document.getElementById('form29').click();
}
const deleteImage = (name, e) => {
const remainingImage = image.filter(img => {return img.name !== name});
setImage(remainingImage);
const remainingImageState = addDiary.images.filter(img =>
{
return img.name !== name});
setAddDiary({...addDiary, images: remainingImageState });
}
const pickImage = (e) => {
console.log(e, 'e obj')
for(const file of e.target.files) {
const reader = new FileReader();
reader.onload = (e) => {
setImage([...image, {url: URL.createObjectURL(file), name: file.name}]);
console.log(e.target.name)
setAddDiary({ ...addDiary, images: [...addDiary.images, file]});
};
reader.readAsDataURL(file);
}
}
【问题讨论】:
标签: javascript node.js reactjs redux