Почему удалять StrictMode плохая идея?

Поделиться
HTML-код
  • Опубликовано: 20 янв 2025

Комментарии • 81

  • @perejro9916
    @perejro9916 Год назад +39

    Огромное спасибо. Теперь удаляю с пониманием)

    • @it-sin9k
      @it-sin9k  Год назад +1

      ааххаха) хорошо сказано)

    • @Xeon83
      @Xeon83 8 месяцев назад

      А я с удовольствием. Костыль архитектуры библиотеки, это стоит называть именно так!

  • @vitek8137
    @vitek8137 Год назад

    Спасибо большое. Смотрел устаревший материал по реакту и всё гадал почему куча рендеров и запросов на сервак, сейчас стало чуточку понятнее...

  • @IT-Svyatoslav
    @IT-Svyatoslav Год назад +2

    Синяк, низкий тебе и помощникам поклон!
    Ооочень полезная информация. Ставлю 👍 и жду нового подробного контента😊. Многие кого я знаю, пользуются твоим открывающим подводные камни материалом

    • @it-sin9k
      @it-sin9k  Год назад +1

      Спасибо большое! Я рад, что мои видео помогают прокачиваться!)

  • @роматарасов-о8л
    @роматарасов-о8л Год назад +5

    отлично, как и много раз до этого раскрываешь тему которую все игнорируют
    спасибо автору, ждём ещё больше откровений

    • @it-sin9k
      @it-sin9k  Год назад

      Спасибо! Эту тему я сам долго игнорировал) и наконец то пришлось с ней столкнуться)

  • @pollstetchem
    @pollstetchem Год назад

    Буквально неделю назад разбирался с этой темой)) А сейчас с удовольствием послушал. Спасибо за контент друг

  • @Flamel001100
    @Flamel001100 Год назад +1

    2:09 - только Strict Mode ~выключен~ включен?

  • @ПавелОстаточников

    Видео полезное, многие просто не включают стрикт мод и не вникают что это и для чего

    • @n_dudin
      @n_dudin Год назад

      Для вникания надо читать доки и практиковать(но не проектах).

  • @TheTexPro
    @TheTexPro Год назад

    спасибо большое!

  • @kl3yto733
    @kl3yto733 Год назад

    весьма любопытно, спасибо!

  • @oWeRQ666
    @oWeRQ666 Год назад

    Вроде все из лучших побуждений, но все еще не хватает явного способа определить первый рендер и последний анмоунт, почему-то с ходу не могу вспомнить где это было нужно, но пару раз точно было, насчет варнингов при установки стейта - это логично и безобидно, и вполне может быть ожидаемым поведением, если запрос нельзя заабортить и запрос не может измениться.

  • @andrew-966hdf47
    @andrew-966hdf47 Год назад

    Спасибо за видео! Очень бы хотелось услышать от тебя большой доклад о работе RSC.

    • @it-sin9k
      @it-sin9k  Год назад

      В планах есть такое видео)

    • @andrew-966hdf47
      @andrew-966hdf47 Год назад

      @@it-sin9k это отлично! С меня донат ;)

  • @aleksprimetv
    @aleksprimetv 10 месяцев назад +2

    Удалил года три назад с проекта СтриктМод, думал это видео заставит меня вернуть его, не заставило xD

    • @it-sin9k
      @it-sin9k  10 месяцев назад

      Попытка не пытка))

  • @romanmed9035
    @romanmed9035 Год назад

    смотрел выпуски как развлечения. а вот в этом выпуске уже интересное увидел.

  • @Илья-э7ю9в
    @Илья-э7ю9в Год назад +4

    По моему проблема с неактуальными запросами на сервер при быстрой смене роута вполне актуальна. Более того если запросы на сервер разные в рамках одного компонента, и меняются опираясь на массив зависимостей, то при быстрой смене той самой зависимости компонент будет сходить с ума - отображать данные от предыдущих запросов. Так что хак с boolean переменной вполне оправдан.

    • @NEWESTERS
      @NEWESTERS Год назад

      Так это же не хак, а вполне себе straightforward решение)
      А ещё более семантичным решением будет использовать AbortController

    • @Илья-э7ю9в
      @Илья-э7ю9в Год назад

      @user-me5zb5qi9b Да. Я там есть)

    • @alexs7931
      @alexs7931 Год назад

      а почему у вас такие ники user-pi и user-me?
      уже не первый раз вижу в комментах видосов разных ютуберов, словно сгенерированы.

    • @Илья-э7ю9в
      @Илья-э7ю9в Год назад

      @@alexs7931Сложно сказать) Раньше было нормально. Потом стало так. Уже давненько. Меня особо не напрягает

  • @Virass
    @Virass Год назад +7

    Я еще слишком молод для такого 😅 Поживу еще немного в свое удовольствие))

  • @romandeveloper7720
    @romandeveloper7720 Год назад +1

    привет.
    Сними ролик о правильном фетчинге данных с редаксом без useEffect, пожалуйста

  • @ДалерКамолов-г5т

    Здравствуйте, вопрос не по теме, но хотелось бы узнать ваше мнение. Нормально будет ли использовать в handlechange - ах инпута не useState а ref?

    • @it-sin9k
      @it-sin9k  Год назад +1

      смотря для какой цели) почему возник такой запрос?

    • @ДалерКамолов-г5т
      @ДалерКамолов-г5т Год назад

      @@it-sin9k вот смотрю на многие сайты, яндекс и вк там когда в инпуте что-то вводиш, не происходит перерендер. Вот как они это сделали?)

  • @Ramosok
    @Ramosok Год назад

    Оч круто!

  • @drunk_craft
    @drunk_craft Год назад +2

    Пойду верну Strict Mode в проект)

    • @it-sin9k
      @it-sin9k  Год назад

      Уже значит не зря видео записали!)

  • @ramilgaripov3447
    @ramilgaripov3447 Год назад +9

    Никогда не удалял StrictMode :)

    • @it-sin9k
      @it-sin9k  Год назад

      Вот это респект!)

  • @СергейКоролев-о6й1я

    В первые вижу такую крутую подачу

  • @romandeveloper7720
    @romandeveloper7720 9 месяцев назад

    Парни.
    Возможно, при маунте компонента вообще не надо писать в useEffect запрос. Либо в рендер функции самописный хук а-ля реакта квери, или же можно вообще в react-router-dom loader свойство в createBrowserRouter сделать, оно и перед маунтом сработает, либо шину какую-то свою написать. И логичнее будет, что так данные перед маунтом зафетчатся, а не после. В кейсах с СТМами. А если на стейтах обычных реактовских - то хук самописный в рендер функции и всё.

    • @it-sin9k
      @it-sin9k  9 месяцев назад +1

      Тут надо дождаться анонса 19-ой версии React. Они там кажется подготовили хук отдельный для запросов, вместо useEffect :)

    • @romandeveloper7720
      @romandeveloper7720 9 месяцев назад

      @@it-sin9k ого-го)

  • @WebBestMaster
    @WebBestMaster Год назад +1

    я почти правильно ответил (перепутал положение второго "RENDER"), а в целом я знаю как это работает, тоже одно время пришлось с этим стрик модом по**аться

  • @Ramosok
    @Ramosok Год назад

    Почти) правильно угадал) я с этим сталкивался

  • @hydrock9738
    @hydrock9738 Год назад

    Спасибо

  • @МаксимВоробьёв-ч4к
    @МаксимВоробьёв-ч4к 7 месяцев назад

    Крутое видео

  • @paljm345
    @paljm345 Год назад +1

    1:38 - стрикт мод ВЫКЛЮЧЕН
    2:08 - стрикт мод ВЫКЛЮЧЕН
    Ээээ, что?!?!
    2:08 - м.б. включен??

    • @it-sin9k
      @it-sin9k  Год назад +2

      Да) оговорочка вышла)

  • @ПавелОстаточников

    В rtk-query есть кэширование и одинаковый запрос не будет отправлен. По прерыванию при размонтировании: мы в return добавили прерывание запроса, а не игнорирование ответа. Чтобы если запрос не нужен, то ресурсы даже не тратились на него, и опять же в rtk-query это легко сделать.

  • @golden_smiles
    @golden_smiles 6 месяцев назад

    Удалил со своего проекта СтриктМод, а потом подумал, и удалил весь реакт из проекта. Потому что да, вот поэтому, все как мы любим, гениальные идеи типа а давайте в деве будет не так, как на продакшене. А давайте еще цвета будут другими, и шрифты? А то люди не следят за контрастами и аксессебилити, почему нет? А заодно и писать на деве давайте на другом языке, а потом переписывать в продашен. Ах да, и на другой платформе, давайте в деве на другой платформе писать. А на продакшене -- тоже в другой. Вот и удалил, хорошая же идея.

    • @it-sin9k
      @it-sin9k  6 месяцев назад

      на чем переписал?)

  • @ЕвгенийАл-л3е
    @ЕвгенийАл-л3е Год назад +1

    Ещё есть момент, что можно получить ошибки за счёт разницы в поведении дев и прод режимов

  • @portusdelphini
    @portusdelphini 3 месяца назад

    Фиговая фишка, когда есть операции модификации данных на бэке

    • @it-sin9k
      @it-sin9k  3 месяца назад

      как раз таки наоборот, вы должны отменять запросы, а useEffect вызывается дважды очень быстро, там точно бэкэнд не успеет отработать

  • @BearVodkaAndValenki
    @BearVodkaAndValenki Год назад

    Удалял strict mode раньше и впредь буду.

  • @K2_PS
    @K2_PS Год назад

    Нет не удалось)

  • @n_dudin
    @n_dudin Год назад

    function useSafeState(initialState) {
    const mounted = useRef(false);
    const [state, update] = useState(initialState);
    const setState = useCallback((value: SetStateAction) => {
    if (mounted.current) update(value);
    }, []);
    useEffect(() => {
    mounted.current = true;
    return () => {
    mounted.current = false;
    }
    }, []);
    return [state, setState];
    }

  • @snatvb
    @snatvb Год назад +2

    стрикт на больших прилагах может сильно замедлять разработку, и бывают еще другие приколы с сайд эффектами и библами
    плюс мы юзаем логирование, и оно его оч сильно засирает, что не помогает при фиксе багов :)

    • @it-sin9k
      @it-sin9k  Год назад

      а как оно замедляет разработку?

    • @ВалерийСмирнов-у9ш
      @ВалерийСмирнов-у9ш Год назад

      Делает невозможным отследить маунт и анмаунт компонента

    • @snatvb
      @snatvb Год назад +1

      @@it-sin9k например коммент ниже, иногда у тебя это может быть провайдер, который в целом никогда такого поведения не ожидает и тебе приходится писать костыли ради дев кода. Бывает люди находят ошибки, которых нет и пытаются их понять - что съедает время, как и ошибки внутри библиотек, на которые они не могут повлиять напрямую, но оно никогда не отломается на проде
      покрыть все кейсы мира везде - это очень дорогое удовольствие

    • @it-sin9k
      @it-sin9k  Год назад +1

      сегодня было обсуждение по поводу добавить в наш текущий проект StrictMode, жду с нетерпением грабли об которые му ударимся))

    • @snatvb
      @snatvb Год назад

      @@it-sin9k тогда жду с нетерпением фидбэка)

  • @thecatlucky
    @thecatlucky Год назад +2

    Да, удалось ответить. Т.к. сам разбирался в StrictMode)

    • @it-sin9k
      @it-sin9k  Год назад

      Круто! красавчик!)

  • @ИгорьБарбашов-т7ц

    Да, warning по поводу попытки обновления state у уже размонтированного компонента напрягает. Но вот эти все флаги типа ignore - тоже, на мой взгляд, то еще решение. С большой степенью вероятности при монтировании компонента будет отправлено не 1, а 5 запросов - это что, значит пять флагов? И даже если не 5, а все-таки один, который отслеживает размонтирован ли компонент, то в каждом useEffect такую кострукцию городить... нужна какая-то абстракция на уровне сервиса, котрая это отслеживает.

    • @ramilgaripov3447
      @ramilgaripov3447 Год назад +1

      Легковесная обертка над fetch, кратно улучшает читабельность кода ;)
      Т.е да, флаги, если они нужны, будут под капотом хука useFetch, но внутри компонента будет все красиво.

  • @motolife4900
    @motolife4900 Год назад +1

    боюсь strict mode)))

  • @kri4evskiy
    @kri4evskiy Год назад

    Хотел спросить в телеге, но подумал, что лучше тут)
    Что должно быть в иерархии выше? Провайдер над Стриктом или наоборот?


    { ... }

    • @it-sin9k
      @it-sin9k  Год назад

      В идеале StrictMode над провайдером

    • @ArtyomSamsonchik
      @ArtyomSamsonchik Год назад +1

      Я думаю, что можно обернуть только свой код, а провайдер оставить снаружи. Если ты, конечно, не хочешь потестить редакс и допилить его в случае ошибки) Кстати, стрикт модом сожно оборачивать любой компонент, даже выборочно разные участки кода заворачивать в свой ситрикт мод.