我尝试在我的React应用程序中显示Firebase存储中的图像。我可以使用listall从Firebase存储中获取所有图像。但我不知道如何在用户界面上显示这些图像。我尝试使用map方法,但不起作用。此外,即使页面重新加载,我也希望保持这些显示。我应该使用localstrage还是useEffect?
请帮帮我,这是我的密码。
const PhotoButton = () => {
var storageRef = firebase.storage().ref("images");
const [image, setImage] = useState("");
const [imageUrl, setImageUrl] = useState([]);
const handleImage = event => {
const image = event.target.files[0];
setImage(image);
};
const onSubmit = event => {
event.preventDefault();
if (image === "") {
console.log(“error);
return;
}
const uploadTask = storage.ref(`/images/${image.name}`).put(image);
uploadTask.on(
firebase.storage.TaskEvent.STATE_CHANGED,
next,
error,
complete
);
};
const complete = () => {
storage
.ref("images")
.child(image.name)
.getDownloadURL()
.then(fireBaseUrl => {
setImageUrl(fireBaseUrl);
});
};
// Now we get the references of these images
storageRef.listAll().then(function(result) {
result.items.forEach(function(imageRef) {
// And finally display them
console.log(result.items);
displayImage(imageRef);
});
}).catch(function(error) {
alert(“error!”)
});
function displayImage(imageRef) {
imageRef.getDownloadURL().then(function(url) {
setImageUrl.push(url);
// TODO: Display the image on the UI
}).catch(function(error) {
// Handle any errors
});
}
return(
<div>
<h3 className={classes.addPhotoText}>Photos</h3>
<div className="addphoto">
<form onSubmit={onSubmit}>
<input type="file" onChange={handleImage} />
<Button type="submit" className={classes.PhotoButton}>Submit</Button>
</form>
</div>
<img src={imageUrl} />
{imageUrl.map((url) => (
<img src={url}/>
))}
</div>
);
}
export default PhotoButton
3条答案
按热度按时间mwngjboj1#
它用这个代码工作。
hof1towb2#
对我来说,我需要添加一些东西到@via回答,让它工作。我箍它可以帮助别人
Firebase配置
代码
fafcakar3#
使用firebase web-version 9,这对我列出firebase存储中的所有图像很有效。
Firebase配置
代码
文档链接:www.example.comhttps://firebase.google.com/docs/storage/web/list-files#web-version-9