Как обновить состояние внутри условной логики? - PullRequest
2 голосов
/ 25 марта 2019

Мне нужно обновить свое состояние с помощью ловушки setExpression, только если условие выполнено.Я только что заметил, что это не должно работать, так как вы не можете вызывать хуки из условной логики, но я не смог найти обходного пути.Как я могу это сделать?

let handleOperator = e => {
  let last = expression[expression.length - 1]
  if (last === "+" || last === "-" || last === "*" || last === "/") {
    setExpression(expression.slice(0, -1))
  }
  pushToString(e)
}

1 Ответ

2 голосов
/ 25 марта 2019

Ваш код действителен. Вы можете вызывать функцию setExpression, возвращаемую из useState (например, const [expression, setExpression] = useState('');), где хотите, но вы не можете использовать сам ловушку (useState в этом примере) внутри условной логики.

...