Как мне объединить эти две функции в одну функцию, которая принимает два параметра? - PullRequest
0 голосов
/ 04 июня 2018

У меня есть две функции:

setCallModalFalse = (incomingFlag) => () => {
        if (incomingFlag === 'EmergencyCall') {
            this.setState({ callModal: false });
            this.props.navigation.navigate('EmergencyCall'); 
        } else {
            loggingService.debug('we are not going anywhere');
            this.setState({ callModal: false });
        }
    }
setBeepModalFalse = (incomingFlag) => () => {
            if (incomingFlag === 'PoliceIconPage') {
                this.setState({ beepModal: false });
                this.props.navigation.navigate('PoliceIconPage');
            } else {
                loggingService.debug('hey you pressed setbeepmodalfalse');
                this.setState({ beepModal: false });
            }

Я пытаюсь объединить их в одну функцию

handleModalAndNavigation = (whichModal, incomingFlag) => () => {
    if (whichModal === 'beep' && incomingFlag === 'PoliceIconPage') {
        this.setState({ beepModal: false });
        this.props.navigation.navigate('PoliceIconPage'); 
    } else {
        this.setState({ beepModal: false });
    }
    if (whichModal === 'call' && incomingFlag === 'EmergencyCall') {
        this.setState({ callModal: false });
        this.props.navigation.navigate('EmergencyCall'); 
    } else {
        this.setState({ callModal: false });
    }
}

мой конструктор выглядит так:

constructor(props) {
        super(props);
        this.setBeepModalFalse = this.setBeepModalFalse.bind(this);
        this.setCallModalFalse = this.setCallModalFalse.bind(this);
        this.callButton = this.callButton.bind(this);
        this.alarmButton = this.alarmButton.bind(this);
        this.handleModalAndNavigation = this.handleModalAndNavigation.bind(this);
        this.state = {
            callModal: false,
            beepModal: false,

        };
        this.batteryLevelIndicator = '';
    }

Однако, когда я пытаюсь загрузить это, я получаю сообщение об ошибке «Ошибка типа: не удается прочитать свойство« связать »с неопределенным» »

При использовании setCallModalFalse и setBeepModalFalse проблем не возникает.
Почему моя функция вдруг не определена?

1 Ответ

0 голосов
/ 04 июня 2018

Вам нужно удалить объявление функции связывания //this.handleModalAndNavigation = this.handleModalAndNavigation.bind(this); в конструкторе, потому что вы уже использовали синтаксис ES6 при объявлении функций.

и ваше объявление функции должно выглядеть примерно так:

handleModalAndNavigation = (whichModal, incomingFlag) => {
    if (whichModal === 'beep' && incomingFlag === 'PoliceIconPage') {
        this.setState({ beepModal: false });
        this.props.navigation.navigate('PoliceIconPage'); 
    } else {
        this.setState({ beepModal: false });
    }

    if (whichModal === 'call' && incomingFlag === 'EmergencyCall') {
        this.setState({ callModal: false });
        this.props.navigation.navigate('EmergencyCall'); 
    } else {
        this.setState({ callModal: false });
    }
}
...