#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, только при нажатии кнопки функция будет выполнена