Я сделал пример здесь: https://codesandbox.io/s/cocky-brattain-de5r4
Я делаю интерфейс с вкладками при переключении с одного на другой, компонент должен сначала отменить свою регистрацию (очистка некоторых значений из родительское состояние) через функцию возврата useEffect
и перерегистрировать себя (установить некоторые значения в родительском). Тем не менее, уборка, кажется, не работает. т. е. значение не изменяется до запуска функции регистра.
Посмотрите журнал консоли, когда он впервые регистрирует пустой объект в качестве начального значения. Но при нажатии на tab20 зарегистрированное значение показывает, что это такое до отмены регистрации.
В чем здесь проблема?
Я ожидаю, что произойдет следующее:
(загрузка приложения) -> журнал консоли: {} -> [ register] aaa, установленное на 1 -> (вкладка переключателя) -> [unregister] aaa, установленное на undefined -> журнал консоли: {aaa: undefined (но это 1)} -> [register] aaa, установленное на 1