Home > Software engineering >  React Native TextInput onChangeText triggered Modal onRequestClose
React Native TextInput onChangeText triggered Modal onRequestClose

Time:02-12

I created a Modal with TextInput to create a "Festival" in my database. To create i open a Modal by click "create". The Modal opens, the TextInput works fine.

But why is this TextInput onChangeText function triggering my Modal onRequestClose function?

import React, { Component } from 'react';
import { Alert, Button, Modal, Text, TextInput, StyleSheet, View } from 'react-native';

export default class EventCreate extends Component {
    state = { eventName: null, eventAdress: null, eventDate: null, eventPasskey: null }

render() {
    const { onSave, toggleModal } = this.props;
    const { eventName, eventAdress, eventDate, eventPasskey } = this.state;

    return (
        <Modal visible={this.props.visible} onRequestClose={console.log('wtf')} animationType={'slide'}>
            <View style={styles.container} >
                <Text>Bezeichnung</Text>
                <TextInput
                    style={styles.input}
                    onChangeText={text => this.setState({ eventName: text })}
                    placeholder="Bezeichnung"
                />
                <Button
                    onPress={() => {
                        Alert.alert(
                            "Event speichern?",
                            "Moechtest Du das Event"   " "   eventName   " "   "wirklich speichern?",
                            [
                                {
                                    text: "Abbruch",
                                    onPress: () => console.log("Eingabe vom Benutzer abgebrochen"),
                                    style: "cancel"
                                },
                                {
                                    text: "Speichern", onPress: function () {
                                        onSave(eventName, eventAdress, eventDate, eventPasskey);
                                        toggleModal();
                                    }
                                }
                            ]
                        );

                    }}
                    title="SAVE" />
            </View>
        </Modal>
    );
  }
}
const styles = StyleSheet.create({
    container: {
        alignItems: 'center'
    },
    input: {
        height: 40,
        width: 250,
        margin: 12,
        borderWidth: 1,
        padding: 10,
    },
});

CodePudding user response:

Try this way

onRequestClose={() => console.log('wtf')}
  • Related