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