TouchableOpacity onPress не работает (тест эмулятора) - PullRequest
0 голосов
/ 05 августа 2020

Итак, начнем с react-native. У меня есть компонент с отслеживанием состояния, созданный, как показано ниже:

class LoginView extends Component {
  constructor(props) {
  super(props);
  this.state = {
  inProgress: false
   };
 }

 processLogin(){
  this.setState({
  inProgress: true
  })
 }

render() {
 return (
  <View style={styles.mainContainer}>
    <View style={styles.loginContainer}>
      <TextInput style={styles.input} placeholder="Password" />
      <TouchableOpacity style={styles.button} onPress={() => this.processLogin()}>
        {!this.state.inProgress && <Text style={styles.button_text}>Log in</Text>}/>}
      </TouchableOpacity>
    </View>
  </View>
);}}

Как видите, я привязываю событие onPress сенсорной непрозрачности к функции processLogin. Но по какой-то причине функция не запускается!

state не меняется, также пробовал console.log, но тоже не сработал. Убедился, что TouchableOpacity импортирован из React-Native.

Я предполагаю, что перепутал привязку. Мы будем благодарны за любые выводы!

Примечание: Пробовали это только в эмуляторе, а не на реальном устройстве.

1 Ответ

0 голосов
/ 05 августа 2020

вместо использования стрелочной функции на onPress prop, используйте его при объявлении бизнес-функции processLogin Поэтому, в частности, замените объявление этого метода на:

processLogin = () => {
    this.setState({
        inProgress : true
    })
}

Затем по методу onPress , просто измените его так:

onPress = {this.processLogin}

Наоборот, вы ссылаетесь не на то this Надеюсь, это поможет С уважением, сэр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...