Коллеги, которые сегодня не проклинали этот язык, я искренне за вас рад, а у меня сейчас тот момент дзена, когда уже не злишься, а просто сидишь и смотришь в консоль с чувством глубокого философского принятия. Всё началось с безобидной задачи: обновить состояние, перерендерить компонент, ничего сверхъестественного. Но undefined это не просто слово, это образ жизни, потому что мой useState живёт своей жизнью, useEffect срабатывает в каком-то непонятном для человеческой логики порядке, а переменная, которую я явно объявил и инициализировал, в момент выполнения становится такой же призрачной, как моя вера в то, что TypeScript реально помогает, а не просто красиво подсвечивает.
Я переписал этот хук четыре раза, добавил useCallback, обернул всё в useMemo, наставил зависимостей как на новогоднюю ёлку, но консоль упорно выводит Cannot read property ‘map’ of undefined, причём ровно в тот момент, когда я уже мысленно праздную победу и завариваю третий кофе.
Проблема в том, что код работает локально на горячей перезагрузке, ломается после билда, а в прод я её, конечно же, выкатил, потому кто ж не выкатывает пятничным вечером, когда всё казалось стабильным. Если вы сейчас узнали себя, если у вас тоже есть любимая ошибка, которая заставляет вас уважать себя чуть меньше, а разработчиков браузера чуть больше, присоединяйтесь к вечернему джему: я тут уже четыре часа сражаюсь с асинхронностью, которая асинхронна настолько, что мне кажется, она делает это специально, просто чтобы я никогда не забывал, кто в этом доме хозяин.
Ответьте тем, кто сегодня победил JavaScript, мне нужно знать, что это вообще возможно, и, может быть, завтра я тоже куплю себе наушники с шумоподавлением и начну писать на Python, где хотя бы ошибки понятные и не спрашивают, почему ты не поставил await в пятый раз.