React Native - Share方法取消事件

时间:2017-05-21 10:36:04

标签: android react-native react-router react-redux

我使用React Native Share Method(https://facebook.github.io/react-native/docs/share.html)在 Android 上分享内容。

根据文档,我们可以通过以下方式使用它:

Share.share({
        message: 'React Native | A framework for building native apps using React'
    })
    .then((result) => {
        console.log(result.action) // returns sharedAction 
    })
    .catch((error) => {
        console.log(error)
    })

因此,当我们调用Share方法时,我们会在then中获得结果,并且会出现弹出窗口,其中包含可与我们共享消息内容的应用列表。

问题:

弹出窗口还包含一个cancel按钮,因此当用户点击它时,窗口会关闭,但在文档中没有可用/提及的方法来捕获它。

有没有办法捕获取消事件,因为我想在用户点击它时执行一些操作。

谢谢你。 :)

2 个答案:

答案 0 :(得分:0)

这可能有帮助

import React, {Component} from 'react';
import {Share, Button} from 'react-native';

class ShareExample extends Component {
  onShare = async () => {
    try {
      const result = await Share.share({
        message:
          'React Native | A framework for building native apps using React',
      });

      if (result.action === Share.sharedAction) {
        if (result.activityType) {
          // shared with activity type of result.activityType
        } else {
          // shared
        }
      } else if (result.action === Share.dismissedAction) {
        // dismissed
      }
    } catch (error) {
      alert(error.message);
    }
  };

  render() {
    return <Button onPress={this.onShare} title="Share" />;
  }
}

答案 1 :(得分:0)

共享dismissedAction中有选项,但是很遗憾,这仅是IOS。您可以将react-native-share 与道具“ failOnCancel”一起使用为真,它将同时在android和ios上运行

示例代码

import React, { Component } from "react";
import { Button } from "react-native";

import Share from "react-native-share";

export default class ShareExample extends Component {
  onShare = async () => {
    const shareOptions = {
      title: "Share file",
      social: Share.Social.EMAIL,
      failOnCancel: true
    };

    try {
      const ShareResponse = await Share.open(shareOptions);
      //setResult(JSON.stringify(ShareResponse, null, 2));
    } catch (error) {
      console.log("Error =>", error);
    }
  };

  render() {
    return <Button onPress={this.onShare} title="Share" />;
  }
}

应用预览

enter image description here