Как вызвать класс и установить setState в один onClick (ReactJS) - PullRequest
0 голосов
/ 12 октября 2019

Я довольно новичок в React, и мне было интересно, как я могу вызвать функцию внутри класса (например, this.handleChange) и функцию стрелки с setState внутри в пределах одного onClick кнопки.

Я пытался использовать запятые и && между двумя строками кода.

<button name="Plus" onClick={() => this.setState({ Operator: 'plus' }) && this.handlePlus}>+</button>

Приведенный выше код находится внутри рендера и возврата.

Ожидаемый результат - код вызываетфункция и меняет состояние. Вместо этого он просто меняет состояние (так же, как и первая часть).

Пожалуйста, помогите, заранее спасибо!

Ответы [ 3 ]

1 голос
/ 12 октября 2019

setState() имеет необязательный второй параметр, который является функцией, которая будет вызываться после установки состояния. Вы можете сделать:

this.setState({ Operator: 'plus' }, this.handlePlus);

Вы также можете использовать жизненный цикл componentDidUpdate:

componentDidUpdate(prevProps, prevState) {
  if(this.state.Operator === 'plus' && prevState.Operator !== 'plus') {
    this.handlePlus();
  }
}
0 голосов
/ 12 октября 2019

Просто добавьте this.setState({ Operator: 'plus' } в функцию handlePlus.

0 голосов
/ 12 октября 2019
< button name = "Plus"
onClick = {
  () => this.setState({
    Operator: 'plus'
  }, () => this.handlePlus())
} > + < /button>

this would work fine.or
if you are looking
for something like this....
you can handle multiple buttonClick event like this

  <
  button name = "Plus"
value = "yourValue"
onClick = {
  this.handleChange
} > + < /button>

handleChange = (e) => {
  const {
    name,
    value
  } = e.target;
  switch (name) {
    case 'Plus':
      this.setState({
        [name]: value
      });
      break;
    default:
      //enter code here
      break;
  }

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