按下按钮后如何使用异步功能?

时间:2020-04-17 19:40:36

标签: react-native

我试图在按下按钮时使用异步功能,我需要按下按钮才能共享数据。 onPress代码上的按钮如下所示。

    <TouchableOpacity
      disabled={buttonDisabled}
      onPress={Share}
      style={[
        styles.btTouchable,
        buttonDisabled && styles.buttonDisabled,
      ]}>
    </TouchableOpacity>

我要共享的功能如下:

async function Share() {
    try {
      let locationData = await new LocationData().getLocationData();

      const jsonData = base64.encode(JSON.stringify(locationData));
      const title = '';
      const filename = '';
      const message = '';
      const url = 'data:application/json;base64,' + jsonData;
      const options = Platform.select({
        ios: {
          activityItemSources: [
            {
              placeholderItem: { type: 'url', content: url },
              item: {
                default: { type: 'url', content: url },
              },
              subject: {
                default: title,
              },
              linkMetadata: { originalUrl: url, url, title },
            },
            {
              placeholderItem: { type: 'text', content: message },
              item: {
                default: { type: 'text', content: message },
                message: null, // Specify no text to share via Messages app.
              },
            },
          ],
        },
        default: {
          title,
          subject: title,
          url: url,
          message: message,
          filename: filename,
        },
      });

      Share.open(options)
        .then(res => {
          console.log(res);
        })
        .catch(err => {
          console.log(err.message, err.code);
        });
    } catch (error) {
      console.log(error.message);
    }
  }

如何在按下按钮时使异步功能起作用?非常感谢

1 个答案:

答案 0 :(得分:1)

好吧,您可以尝试通过以下方式使用该功能:

Share = async () => {
  .....
  .....
}

并以这种方式调用函数:

   <TouchableOpacity
     disabled={buttonDisabled}
     onPress={this.Share}
     style={[
       styles.btTouchable,
       buttonDisabled && styles.buttonDisabled,
     ]}>
   </TouchableOpacity>

[编辑]

要将其与挂钩一起使用,您可以阅读本文:React Hooks Basics— Building a React Native App with React Hooks