Javascript 从Firebase下载图像(React本机)
我正在尝试从Firebase存储下载图像并在我的应用程序中显示它。我尝试获取下载url的方式如下:Javascript 从Firebase下载图像(React本机),javascript,reactjs,firebase,react-native,firebase-storage,Javascript,Reactjs,Firebase,React Native,Firebase Storage,我正在尝试从Firebase存储下载图像并在我的应用程序中显示它。我尝试获取下载url的方式如下: let imageRef = firebase.storage().ref('users/' + firebase.auth().currentUser.uid + '/' + 'userImage'); imageRef .getDownloadURL() .then((url) => { console.log(url) }) .catch
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
这当然意味着,当我试图以以下方式显示图像时,无法调用url:
<Image source={{uri: url}} />
关于如何处理和解决这个问题有什么想法吗?非常感谢 解决方案是将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后重新呈现输出
如果你喜欢,你会有这样的东西:
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));
太棒了!非常感谢你的回答和善意的解释。