在 React Native 中使用 Async Await 函数作为按钮的 OnPress

问题描述 投票:0回答:1

我对 React Native 和 JavaScript 都很陌生。尤其是JSX等,我才刚刚开始学习。我有一个按钮,按下该按钮应该执行以下操作:

const uploadImage = async (uri: string) => {  
    const pathToFile = uri;
    try {
    const response = await reference.putFile(pathToFile);
    const data = response.state;
    console.log(data);
    }
    catch (error) {
        console.log(error);
    }
    const imageUrl = await reference.getDownloadURL();
    setImageUrl(imageUrl);
  }

但是我收到错误:参数“uri”和“事件”的类型不兼容。

我想这是因为使用了await关键字。但我不确定如何以不妨碍等待(对 Firebase 工作很重要)的方式编写上述函数,但按下按钮时,它会调用此函数。

也许一种解决方案是拆分函数,但它仍然会产生此错误,因为仍将使用等待。

编辑: 我使用这个来调用这个函数:

<Button title="Upload Invoice" onPress={uploadImage(uri)} />

URI 是使用 launchCamera 或 launchImageLibrary 所选图像的 uri。

react-native firebase-storage
1个回答
0
投票

尝试像这样调用函数:

<Button title="Upload Invoice" onPress={()=>uploadImage(uri)} />
© www.soinside.com 2019 - 2024. All rights reserved.