#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>
, но не в handleMarkerDrop2. Для ответа на этот вопрос было бы необходимо просмотреть некоторый окружающий код. Но, вероятно, функция handleMarkerDrop захватывает testBool (как закрытие) и должна быть перестроена при изменении testBool.