J'essaie de transmettre tout ce que l'utilisateur tape dans TextInput, pour l'envoyer par courrier électronique à l'aide d'un lien. J'utilise Expo et je n'ai rien rencontré qui puisse faire cela.

export default class Completed extends Component {

state = {
          email: '',
       }
    
    
       handleEmail = (text) => {
          this.setState({ email: text })
       }
    
   render() {
        return ( 
    
    <View>
        <TextInput style={[styles.input, styles.pushUp]} 
        multiline
            placeholder={"Description"}>
        onChangeText = {this.handleEmail}
        </TextInput>
    
           <TouchableOpacity style={styles.button} onPress={() => Linking.openURL('mailto:support@example.com?subject=SendMail&body=Description')}>
            <Text style={{color: "#FFF", fontWeight: "500"}}>NEXT</Text>
           </TouchableOpacity>
    
    </View>

    )

    }

    }
1
Ding0 4 sept. 2020 à 15:28

1 réponse

Meilleure réponse

Veuillez essayer ceci:

const MyTouchableOpacity  = ({ url, children }) => {
  const handlePress = useCallback(async () => {
    // Checking if the link is supported for links with custom URL scheme.
    const supported = await Linking.canOpenURL(url);

    if (supported) {
      // Opening the link with some app, if the URL scheme is "http" the web link should be opened
      // by some browser in the mobile
      await Linking.openURL(url);
    } else {
      Alert.alert(`Don't know how to open this URL: ${url}`);
    }
  }, [url]);

  return <TouchableOpacity style={styles.button} onPress={handlePress} />
};

Et l'utiliser comme ça

<MyTouchableOpacity url={`mailto:${this.state.email}?subject=SendMail&body=Description`}>
  <Text style={{color: "#FFF", fontWeight: "500"}}>NEXT</Text>
</MyTouchableOpacity>

Basé sur la documentation : https://reactnative.dev/docs/linking

2
Roar S. 4 sept. 2020 à 13:56