【发布时间】:2021-09-21 01:34:25
【问题描述】:
我想用 Dropzone 添加图片文件并在浏览器上显示预览。
所以,我必须得到src,它可以在<img /> 使用。所以我做了这个过程:
const handleAddImages = async (inputImages: any[]): Promise<void> => {
const imagesWithSrc = inputImages.map((img) => {
const reader = new FileReader();
new Promise((resolve, reject) => {
reader.onloadend = () => resolve(reader.result);
reader.onerror = reject;
reader.readAsDataURL(img);
}).then(() => (img.src = reader.result));
return img;
});
const nextImages = [...currentImages, ...imagesWithSrc];
handleOnChange({
//set state
target: {
name: "images",
value: nextImages,
},
});
};
并显示该组件中的图像:
export const FileList = ({
images
}: any) => {
const imgs: any[] = images;
return (
<Wrapper>
{imgs.map((img, index) => (
<ImgBox key={index}>
<img src={img.src} />
</ImgBox>
))}
</Wrapper>
);
};
我有一个图像数组imgs 并包含图像文件对象。
当我这样做时:
console.log(imgs[0]);
它将从filereader API输出索引为0的图像文件对象中的每个属性,包括base64中的图像源src。
但是当我这样做时:
console.log(imgs[0].src);
它将输出undefined,
即使我是这样在地图中进行 console.log 操作:
imgs.map((img, index) => {
console.log(img);
console.log(img.src);
})
得到同样的结果,有什么问题?
console.log("imgs[0]", imgs[0]);
console.log("imgs[0].src", imgs[0].src);
输出:
顺便说一下,我一开始可以通过imgs[0].size获取size属性,
添加另一张图片后获取imgs[0].src。
【问题讨论】:
-
你能发布
console.log(imgs[0]);的输出吗? -
请你分享一个
imgs是什么的例子? -
我发布了 imgs[0] 和 imgs[0].src 的输出捕获。
-
imgs[0].File.src
-
@Ernesto 感谢您的帮助,但是文件正是 imgs[0] 的内容,我只是添加了我编写的 console.log 的代码。
标签: javascript reactjs