Почему моя привязка в конструкторе не работает? - PullRequest
2 голосов
/ 05 июля 2019

В моем собственном родном приложении есть функция, когда пользователь нажимает кнопку (handleButtonAPressed), которая использует setState, поэтому я пытаюсь связать ее в своем конструкторе с помощью следующего кода

const handleButtonAPressed = () => {
  this.setState({x: this.state.x + 1});
}

export default class SvgExample extends React.Component {

  constructor(props) {
    super(props);
    this.state = { x: 0, y: 0 };
    this.handleButtonAPressed = this.handleButtonAPressed.bind(this);
  }

  render() {
    return (
      <View>
        <RoundButton onPress={handleButtonAPressed} />
      </View>
    );
  }
}

Однако я получаю сообщение об ошибке:

'Ошибка типа: undefined не является объектом (оценка' _this2.handleButtonAPressed.bind)

1 Ответ

3 голосов
/ 06 июля 2019

handleButtonAPressed должен быть внутри вашего класса, чтобы вы могли сделать this.handleButtonAPressed.bind(this). Если у вас нет handleButtonAPressed внутри вашего класса, this.handleButtonAPressed будет undefined и невозможно сделать .bind.

Вот что вы должны сделать

export default class SvgExample extends React.Component {

  constructor(props) {
    super(props);
    this.state = { x: 0, y: 0 };
    this.handleButtonAPressed = this.handleButtonAPressed.bind(this);
  }

  handleButtonAPressed() {
    this.setState({x: this.state.x + 1});
  }

  render() {
    return (
      <View>
        <RoundButton onPress={handleButtonAPressed} />
      </View>
    );
  }
}
...