Не удается перейти к следующей сцене с помощью функции

#react-native

#react-native

Вопрос:

Я использую маршрутизатор React Native и onPress, я хочу использовать функцию, которая работает так, как я хочу, но я не могу использовать функцию навигации внутри нее

Это работает:

 <TouchableHighlight onPress={Actions.home} underlayColor="transparent">
</TouchableHighlight>
  

Но это не:

 nextScene = () => {
      if(this.state.tekstNummer >= Object.keys(teksten).length-1){
        Actions.home
      }
      else{
        this.setState({tekstNummer: this.state.tekstNummer 1})
      }
    };

<TouchableHighlight onPress={nextScene} underlayColor="transparent">
</TouchableHighlight>
  

Оператор else работает, но действие.home внутри инструкции if не работает. Как я мог это исправить и по какой причине это не работает?

Ответ №1:

На самом деле вы не вызываете свою домашнюю функцию.

 nextScene = () => {
      if(this.state.tekstNummer >= Object.keys(teksten).length-1){
        // call the function()
        Actions.home();
      }
      else{
        this.setState({tekstNummer: this.state.tekstNummer 1})
      }
    };
  

Комментарии:

1. Спасибо, я не думал, что это будет так просто, но почему мне не нужно использовать скобки вне функции?

2. Потому что вы привязываете функцию к свойству onPress. TouchableHighlight вызовет переданную функцию, когда нажатие действительно произойдет. Другими словами: вы передаете ссылку на функцию в TouchableOpacity, только при нажатии кнопки функция будет выполнена