从 Firebase 下载图像(React Native)

我正在尝试从 Firebase 存储下载图像并将其显示在我的应用程序中。我尝试获取下载网址的方法如下:


let imageRef = firebase.storage().ref('users/' + firebase.auth().currentUser.uid + '/' + 'userImage');

    imageRef

    .getDownloadURL()

    .then((url) => {

    console.log(url)

    })

    .catch((e) => console.log('getting downloadURL of image error => ', e));

现在,这完美地注销了 url。然而,从该函数外部无法访问它。如果我尝试在 .catch 之后立即访问它,我会收到以下错误:


ReferenceError:找不到变量:url


当然,这意味着当我尝试按以下方式显示图像时,我无法调用该网址:


<Image source={{uri: url}} />

关于如何处理和解决这个问题有什么想法吗?多谢!


慕丝7291255
浏览 103回答 1
1回答

拉莫斯之舞

解决方案是将 URL 存储在组件的状态中,而不是变量中:let imageRef = firebase.storage().ref('users/' + firebase.auth().currentUser.uid + '/' + 'userImage');    imageRef    .getDownloadURL()    .then((url) => {      setState({ url: url });    })    .catch((e) => console.log('getting downloadURL of image error => ', e));这不仅可以确保 render 方法可以找到它,而且可以在计算出 URL 后重新渲染输出。如果你使用 hooks,你会得到类似的东西:const [url, setUrl] = useState();let imageRef = firebase.storage().ref('users/' + firebase.auth().currentUser.uid + '/' + 'userImage');    imageRef    .getDownloadURL()    .then((url) => {      setUrl(url);    })    .catch((e) => console.log('getting downloadURL of image error => ', e));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript