为了账号安全,请及时绑定邮箱和手机立即绑定

从 Firebase 下载图像(React Native)

从 Firebase 下载图像(React Native)

慕丝7291255 2023-09-07 17:03:53
我正在尝试从 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}} />关于如何处理和解决这个问题有什么想法吗?多谢!
查看完整描述

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

解决方案是将 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));


查看完整回答
反对 回复 2023-09-07
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信