Javascript 如何更改图像src?
我正在尝试更改图像,并将其用作firebase中的用户配置文件照片 我可以上传图片到存储,但我不能采取他们的网址使用下面的代码Javascript 如何更改图像src?,javascript,reactjs,firebase,firebase-storage,Javascript,Reactjs,Firebase,Firebase Storage,我正在尝试更改图像,并将其用作firebase中的用户配置文件照片 我可以上传图片到存储,但我不能采取他们的网址使用下面的代码 storage .ref("images") .child(image.name) .getDownloadURL() .then(url => { setUrl(url) }) 然后我想使用这个url来更改图像src constupuserphoto=()=>{user.updateProfile({photoURL:url})
storage
.ref("images")
.child(image.name)
.getDownloadURL()
.then(url => {
setUrl(url)
})
然后我想使用这个url来更改图像src
constupuserphoto=()=>{user.updateProfile({photoURL:url})}
但它不起作用..我怎样才能解决这个问题,还有更好的方法吗?请开导我
全部代码
import React, { useState } from 'react'
import fire from "./fire"
function Profilephoto({ open, children, onClose }) {
const[image, setImage] = useState(null)
const[url, setUrl] = useState("")
const[progress, setProgress] = useState(0)
const storage = fire.storage();
const user = fire.auth().currentUser
if (!open) return null
const asdChange = (e) => {
if(e.target.files[0]) {
setImage(e.target.files[0])
}
}
const asdUpload = () => {
const uploadTask = storage.ref(`ìmages/${image.name}`).put(image)
uploadTask.on(
"state_changed",
snapshot => {
const progress= Math.round(
(snapshot.bytesTransferred/snapshot.totalBytes) * 100
)
setProgress(progress)
},
error => {
console.log("error")
},
() => {
storage
.ref("images")
.child(image.name)
.getDownloadURL()
.then(url => {
setUrl(url)
})
}
)
}
const setProfile = () => {
user.updateProfile({photoURL: url})
}
return (
<>
<div className="modalb"></div>
<div className="modala">
<progress value={progress} max="100"/>
<input type="file" onChange={asdChange}/>
<button onClick={asdUpload}>Upload</button>
<form onSubmit={setProfile}>
<input type="submit" value="Add"/>
</form>
<img src={url} width="250rem" height="250rem" alt="error"/>
<button onClick={onClose}>Close</button>
{children}
</div>
</>
)
}
export default Profilephoto
import React,{useState}来自“React”
从“/fire”导入火
函数Profilephoto({open,children,onClose}){
常量[image,setImage]=useState(null)
const[url,setUrl]=useState(“”)
const[progress,setProgress]=useState(0)
常量存储=fire.storage();
const user=fire.auth().currentUser
如果(!open)返回null
常量asdChange=(e)=>{
if(e.target.files[0]){
setImage(e.target.files[0])
}
}
常量asdUpload=()=>{
const uploadTask=storage.ref(`ìmages/${image.name}`).put(image)
上传任务(
“状态已更改”,
快照=>{
const progress=Math.round(
(snapshot.ByTestTransfered/snapshot.totalBytes)*100
)
设置进度(进度)
},
错误=>{
console.log(“错误”)
},
() => {
存储
.ref(“图像”)
.child(image.name)
.getDownloadURL()
。然后(url=>{
setUrl(url)
})
}
)
}
常量setProfile=()=>{
user.updateProfile({photoURL:url})
}
返回(
上传
接近
{儿童}
)
}
导出默认配置文件照片
制作这样的东西,像useffect
useEffect({
setProfile()
}, [url]);
你能提供完整的代码吗?这样我们就可以正确地理解它了