Как использовать функцию asyn c при нажатии кнопки? - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь использовать функцию asyn c при нажатии кнопки, мне нужна кнопка для обмена данными. Кнопка onPress code выглядит следующим образом.

    <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);
    }
  }

Как заставить работать функцию asyn c при нажатии кнопки? Большое спасибо

1 Ответ

1 голос
/ 17 апреля 2020

Ну, вы можете попробовать использовать функцию следующим образом:

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

и вызвать функцию следующим образом:

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

[Редактировать]

Для использования с помощью хуков, вы можете следовать этой статье: Основы React Hooks - Создание собственного приложения React с использованием React Hooks

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...