React Native:bind和' this'?

时间:2018-01-10 16:48:08

标签: reactjs this bind

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类不会自动将方法绑定到自身。但是这个&#39;是什么呢?在方法onButtonPress()中引用我是否写过this.onButtonPress 而不是this.onButtonPress.bind(this)和为什么?

1 个答案:

答案 0 :(得分:0)

传递给bind的第一个参数将定义绑定函数中this的值。

在你的情况下,你通过&#34;这&#34; (而不是&#34; foo&#34;或&#34; bar&#34;)因为您希望this中的onButtonPress成为您this的{​​{1}} },这是render类的实例。

来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind