React Native: связать и "это"?

class LoginForm extends Component {
  state = { email: '', password: '', alert: 'Please Enter Your Email And Password' }


  onButtonPress() {
    const { email, password } = this.state;

    this.setState({ alert: 'Please Try Again' });

    firebase.auth().signInWithEmailAndPassword(email, password)
      .catch(() => {
        firebase.auth().createUserWithEmailAndPassword(email, password)
          .catch(() => {
            this.setState({ alert: 'Login/Registeration Failed.' });
          });
      });
  }

  render() {
    return (
      <Card>
        <CardSection>
          <Button
            text={'Login'}
            onPress={this.onButtonPress.bind(this)}

Как вы видите в последней строке кода, моя кнопка вызывает функцию onButtonPress при каждом нажатии моей кнопки. Я также использовал.bind(this) для привязки метода к компоненту LoginForm. Потому что, насколько я знаю, классы ES6 не привязывают методы к себе. Но к чему относится "this" в методе onButtonPress(), если я написал this.onButtonPress вместо this.onButtonPress.bind(this) и почему?

1 ответ

Решение

Первый параметр передан bind определит значение this внутри связанной функции.

В вашем случае вы передаете "this" (а не "foo" или "bar"), потому что вы хотите this от onButtonPress быть this вашей render, который является примером вашего LoginForm учебный класс.

Источник: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

Другие вопросы по тегам