Javascript 如何更改图像src?

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})

我正在尝试更改图像,并将其用作firebase中的用户配置文件照片

我可以上传图片到存储,但我不能采取他们的网址使用下面的代码

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]);

你能提供完整的代码吗?这样我们就可以正确地理解它了