Почему я не могу прочитать состояние компонента внутри функции обратного вызова dropEvent?

#javascript #reactjs

#javascript #reactjs

Вопрос:

У меня возникли проблемы с пониманием, почему я не могу прочитать переменную состояния компонента внутри функции обратного вызова удаления маркера в компоненте карты.

Внутри моего компонента я инициализирую это состояние как null

 const [testBool, setTestBool] = useState(null);
 

Я объявил функцию для обработки изменения состояния

 const testFunc = () => {
  setTestBool(true);
}
 

и функция обратного вызова, которая выполняется после удаления маркера в компоненте карты

 const handleMarkerDrop = e => {
  console.log('test bool', testBool);
}
 

Внутри моего рендеринга я поместил кнопку для выполнения TestFunc и компонента map

 <button onClick={testFunc}>set to true</button>
  <SomeKindOfMapComponent
     // other props here
     onMarkerDrop={handleMarkerDrop} />
 

Когда я нажимаю на кнопку, состояние обновляется (я могу записать его в консоль как true перед возвратом), но когда я выполняю удаление маркера и выполняется функция handleMarkerDrop, testBool считывается как null

Я также пробовал обходные пути, такие как передача prop as {e => handleMarkerDrop(e, testBool)} , но все равно работает не так, как я ожидал

Комментарии:

1. Я также могу прочитать его внутри возврата (рендеринга) как <button onClick={() => alert(testBool)}>read state</button> , но не в handleMarkerDrop

2. Для ответа на этот вопрос было бы необходимо просмотреть некоторый окружающий код. Но, вероятно, функция handleMarkerDrop захватывает testBool (как закрытие) и должна быть перестроена при изменении testBool.