Что нужно сделать, чтобы стать профессионалом в рамках выбранной специализации?

Ответ

Ответ не найден

Ответ 18+ 🔞

Да ты посмотри, какие времена настали! Раньше, блядь, хоть подписи ставили, а сейчас — ваще ни хуя не подписывают, за своё выдают и пиздец. Ну ладно, проехали.

Так вот, слушай сюда, про этот ваш useEffect. Ты думаешь, это какая-то магия, хуй с горы? Ан нет, чувак. Это просто хуёвая попытка засунуть жизненный цикл классового компонента в функциональный.

Смотри, раньше-то было просто: в классовых компонентах у тебя были методы componentDidMount, componentDidUpdate, componentWillUnmount. Всё чётко, всё на своих местах. Пришёл, сел, написал логику — красота. А потом эти умники из React говорят: "А давайте сделаем хуёво, но по-модному!". И запилили хуйню под названием Хуки.

И вот этот useEffect — он как тот самый Герасим из "Муму". С виду здоровый, сильный, всё может, а на деле — нихуя не говорит. Точнее, говорит, но когда захочет, а не когда тебе надо.

useEffect(() => {
  // Тут твой код, который должен запуститься
  console.log('Компонент смонтировался или обновился');

  return () => {
    // А это — функция очистки, как componentWillUnmount
    console.log('Компонент будет размонтирован');
  };
}, [dependency]); // А это массив зависимостей, ёпта!

Вот смотри на этот массив зависимостей. Это пиздец, а не изобретение. Если он пустой [] — эффект сработает один раз, при монтировании, как componentDidMount. Если его совсем нет — эффект будет запускаться после КАЖДОГО рендера, и ты получишь бесконечный цикл, если неаккуратно состояние меняешь. А если туда что-то положил — так он будет следить за этими переменными и хуярить эффект только когда они меняются.

Самое охуенное, когда ты забываешь зависимости добавить. React тебе вроде как и говорит: "Э, братан, ты тут на count зависишься, а в массив его не положил. Может, добавишь, а?". Но ты же упрямый, как тот мудак Герасим, говоришь: "Да похуй, и так сработает!". А потом получаешь баги, которые ебёшь неделями, потому что эффект использует устаревшее замыкание.

И функция очистки! Это ж надо было такую хуйню придумать. Возвращаешь функцию — и она вызовется перед следующим запуском эффекта или при размонтировании. Красиво звучит? Звучит-то красиво, а на практике ты каждый раз пишешь return () => { socket.close(); } и думаешь: "А не забыл ли я ещё что-то почистить?".

Короче, useEffect — это мощный инструмент, но пользоваться им надо с хуёвой толикой ума. А то получится как в той истории: захотел сделать хорошо, а в итоге — Муму утопил. Не будь как Герасим, думай головой, что ты делаешь.