EventListener с обращением к state?

Мне нужно повесить eventListener и обрабатывать событие, в функции имеются обращения к state, проблема в том, что state меняется, но функция не видит изменение state. Я вижу здесь решение в виде add-remove listener после изменения state, но я думаю, что можно сделать как-то иначе.

Код:

const [flagsLeft, setFlagsLeft] = useState(MINES_AMOUNT);

useEffect(() => {
  document.addEventListener('contextmenu', handleClickRMB, false);
}, []);

const handleClickRMB = (event) => {
  event.preventDefault();

  let index1 = Number(event.path[0].attributes.pos1.value);
  let index2 = Number(event.path[0].attributes.pos2.value);
  let pressedCell = board[index1][index2];
  if ((!pressedCell.opened) && (flagsLeft !== 0)) {
    if (pressedCell.marked) {
      pressedCell.mark();
      setFlagsLeft(flagsLeft => flagsLeft + 1);
    } else {
      pressedCell.mark();
      setFlagsLeft(flagsLeft => flagsLeft - 1);
    }
    changeOneCell(index1, index2, pressedCell);
  }
}

flagsLeft в функции виден всегда одинаковым, хотя по факту он меняется. Как можно реализовать, чтобы в eventLister'е обновлялось значение state? Заранее спасибо.


Ответы (0 шт):