Самый скользкий механизм в Redux

Поділитися
Вставка
  • Опубліковано 25 чер 2024
  • Redux вроде как изучили вдоль и поперек, но от этого он не стал идеальным. В данном видео мы детально разберем самый неприятный механизм в Redux, которым многие стреляют себе в ногу
    KATA - это новый подход к обучению программистов
    Ката Академи: clck.ru/32jBHq
    Исходники - github.com/facebook/react/blo...
    Поддержать Айти Синяка можно здесь:
    UA-cam: / @it-sin9k
    boosty: boosty.to/sin9k
    Patreon: / itsin9k
    00:00 Анонс темы
    00:26 Оплата обучения после трудоустройства
    01:26 useSelector подписывается на store
    03:00 Суть проблемы
    04:43 Изучаем исходники
    08:51 Хрупкость механизма
    10:30 Пример проблемы
    11:55 Подписывайтесь!
    Подписаться на канал: / @it-sin9k
    Twitter: / it_sin9k
    ________________
    Канал о Фронтенде, который хочется порекомендовать (telegram):
    t.me/frontendnoteschannel
    -------------------------
    Данный канал создан для инициирования бесед на различные темы IT сферы (социальные / технические), а также для тех кому короткая видео выжимка статьи, выступления на конференции или же просто личных мыслей, являются более удобным форматом

КОМЕНТАРІ • 159

  • @trueman8413
    @trueman8413 Рік тому +5

    Урааа, новый видос от Синяка

  • @huzimuzi4885
    @huzimuzi4885 Рік тому +2

    Только начал разбирать эту проблему , как у тебя выходит видео!) Спасибо, очень круто все рассказал.

  • @it_doc2319
    @it_doc2319 Рік тому +2

    Отличное видео с разбором тонкостей Redux. Я тоже как-то заметил в профилировщике, что без второго аргумента рендеров больше, нежели с подставленным shallowEqual из Ramda или Lodash.

  • @user-ly6by9ut5r
    @user-ly6by9ut5r Рік тому +2

    Отлично разжевал!!! Спасибо большое))

  • @denisdikusar9423
    @denisdikusar9423 7 місяців тому

    Отлично разжевал! )) Спасибо за детали!

  • @vvadimvoit7704
    @vvadimvoit7704 Рік тому

    супер!) очень интерактивно и доступно, спасибо!)

  • @toni4i696
    @toni4i696 Рік тому

    Это очень полезная информация, спасибо! Были такие ошибка

  • @kspshnik
    @kspshnik 11 місяців тому

    Просто прекрасно!

  • @vladimirliankevich1361
    @vladimirliankevich1361 Рік тому

    Спасибо за информацию. Разжевал отличноооо!!

  • @dmitryjob7980
    @dmitryjob7980 Рік тому

    Отлично разжевал! Спасибо!

  • @AndreyShevchenko-yd3tg
    @AndreyShevchenko-yd3tg Рік тому

    Спасибо. Отлично объяснил

  • @romanchutak
    @romanchutak Рік тому +1

    Реально отлично, благодарю

  • @Ramosok
    @Ramosok Рік тому

    Выход каждого твоего видео, это как праздник) Спасибо!!!

    • @it-sin9k
      @it-sin9k  Рік тому

      Спасибо!)

    • @papa_paskualle
      @papa_paskualle Рік тому +1

      Перед просмотром одеваешься нарядно?

    • @Ramosok
      @Ramosok Рік тому

      @@papa_paskualle да)) как догадался?))

  • @TravinskiyVladislav
    @TravinskiyVladislav Рік тому

    Спасибо, полезное видео

  • @user-be9mi7px6w
    @user-be9mi7px6w Рік тому

    Отличнооо разжевал =D
    Ждем Реселект)))

    • @it-sin9k
      @it-sin9k  Рік тому

      По реселекту все уже опубликовано)

  • @user-ub6wt5nl5b
    @user-ub6wt5nl5b 11 місяців тому

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

    • @it-sin9k
      @it-sin9k  10 місяців тому

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

  • @good_news_every
    @good_news_every Рік тому

    Как всегда круто, спасибо!
    Планируете ли ролики по исследованию производительности приложения,
    например через Profiler (в React Developer Tools) или welldone-software/why-did-you-render ?

    • @it-sin9k
      @it-sin9k  Рік тому +1

      Есть мысли такие, не знаю как доберусь, но мысли есть)

  • @LevShuroff
    @LevShuroff Рік тому +6

    Очень качественный контент, впрочем как всегда на высоте. Благодарю за ценную информацию, ждём нового пушечного контента

  • @user-gs7ro3tl9t
    @user-gs7ro3tl9t Рік тому

    Отлично разжевал!!! Спасибо))))

  • @qutbiddinmakhmudov4088
    @qutbiddinmakhmudov4088 Рік тому

    Отлично разжевал! Мое почтение

  • @alexd1723
    @alexd1723 Рік тому

    Спасибо за годный контент

  • @vasiapypochkin3241
    @vasiapypochkin3241 5 місяців тому

    Спасибо!

  • @korsakovoleg9985
    @korsakovoleg9985 Рік тому +1

    Спасибо, даже знаю где у меня в проекте есть такая ошибка!👍

  • @ansaganie
    @ansaganie Рік тому

    Крутое видео! Спасибо большое! мне кажется для большего понимания нужно было отметить что перерендриваться будут только те компоненты со сломанном селектором. Так люди могут подумать что сломанные селекторы будут заставлять перерендриваться абсолютно все компоненты. Или я что-то не так понял))

  • @user-bp7jb5of5d
    @user-bp7jb5of5d Рік тому

    Лайк!!! Отлично разжевал!!!

  • @sinvolen4193
    @sinvolen4193 Рік тому

    Чувак от души, отлично всё разжевал🤣🤣🤣, успехов тебе

  • @maks-kander6665
    @maks-kander6665 Рік тому

    Очень качественно разжевал все, респект👍

  • @andreev.frontend
    @andreev.frontend Рік тому

    Действительно отлично разжевал! Спасибо! Только вхожу в react/redux и твои видео очень помогают писать код сразу правильно!

    • @it-sin9k
      @it-sin9k  Рік тому

      Рад быть полезным :)

  • @alehbarushka9835
    @alehbarushka9835 Рік тому

    Благодарю!

  • @ArtikMan1994
    @ArtikMan1994 Рік тому

    Хорошо что подобные кейсы на данный момент описаны в документации редакса. Более того, там есть несколько решений данной проблемы в отдельных случаях. И обьясняется как правильно использовать селекторы, а как не стоит

  • @HandsomeRoman
    @HandsomeRoman Рік тому

    Спасибо за позновательный контент!
    Что думаешь о проблеме tearing в отношении разных библиотек с внешним состоянием, например, mobx?

    • @it-sin9k
      @it-sin9k  Рік тому

      честно говоря, я только сейчас гуглил, что такое tearing. Поэтому пока ничего сказать не могу :(

  • @frusen_sol
    @frusen_sol Рік тому +2

    Отличительно разжевал!

  • @AlexanderGontarev
    @AlexanderGontarev Рік тому +1

    хороший видос, спасибо

  • @ilhomyuldoshev5033
    @ilhomyuldoshev5033 Рік тому +1

    Отлично разжевал 👍

  • @miloman1995s
    @miloman1995s Рік тому

    офигенно, я просто всегда юзал reselect и создавал какие то сложные селекторы с помощью функции createSelector(), а оно вон че, но это как промисы, хоть мы и часто пользуемся async await - надо знать как оно работает под капотом, спс!

    • @it-sin9k
      @it-sin9k  Рік тому

      Рад быть полезным!

  • @firefeed1
    @firefeed1 Рік тому +1

    Отлично

  • @Iraes05
    @Iraes05 8 місяців тому

    Долгое время работал на друх стейт менеджерах, пришлось перейти на редакс... Огромное спасибо, что ты делаешь такие замечательные ролики! Без тебя, моя жизнь была бы в разы сложнее!

  • @Shad0w5m00h
    @Shad0w5m00h Рік тому +1

    Спасибо, чрезвычайно полезная информация, много использую редакс! А если селекторы составлять таким образом, что они просто возвращают action.payload, а какие-то изменения производить извне? Так не будет перерендеров?

    • @it-sin9k
      @it-sin9k  Рік тому +1

      Спасибо :)
      Если вы никак не работаете над данными внутри селектора, то лишних рендеров не будет

  • @JustTrace17
    @JustTrace17 Рік тому

    Отлично разжевал!

  • @sv1net584
    @sv1net584 Рік тому +1

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

  • @viktorgusev3701
    @viktorgusev3701 Рік тому

    Блин все круто, но как будто на самом интересно и остановился, хотелось бы услышать про reselect

    • @it-sin9k
      @it-sin9k  Рік тому

      Так есть же финальное видео про reselect
      ua-cam.com/video/qWzxwzcjttk/v-deo.html

  • @r.raskolnickoff1408
    @r.raskolnickoff1408 Рік тому

    Спасибо! В очередной раз убедился что нативный js лучше всяких популярных либ и фреймворков :)

  • @PavelLitkinBorisovich
    @PavelLitkinBorisovich Рік тому +1

    Как жеж хорошо что не надо работать с редаксом больше мне😅

    • @it-sin9k
      @it-sin9k  Рік тому

      Что используете?)

  • @-X-Ray-
    @-X-Ray- Рік тому

    Кайф, лишний раз убеждаешься насколько важно понимать, как работают инструмены)

  • @TheTexPro
    @TheTexPro Рік тому +1

    Отлично разжевал 😉

  • @ultraduck100
    @ultraduck100 Рік тому +2

    а если до реселекта не добрались то можно использовать shallowEqual для поверхностного сравнения, который так любезно нам предоставляет react-redux

    • @it-sin9k
      @it-sin9k  Рік тому +2

      хороший комментарий)

  • @fukas9672
    @fukas9672 Рік тому

    Отлично разжевал)

  • @VYuhim
    @VYuhim Рік тому

    Было бы круто услышать твое мнение про MobX и его сравнение с Redux

    • @it-sin9k
      @it-sin9k  Рік тому

      Да, планируется такой плейлист :)

  • @user-helena-mankova
    @user-helena-mankova Місяць тому

    отлично разжевал))

  • @starwalker.odessa
    @starwalker.odessa Рік тому +2

    Мне одному не понятно почему шаблонизатор react-js пытается изображать из себя - ...контроллер? ))) Что бы проблемы react`а закончились ...нужно перестать превращать его в контроллер. Имеет смысл написать для него - оболочку (архитектуру), которая бы управляла состояниями и шаблона и в целом делегировала полномочия.

  • @evisotskiydev
    @evisotskiydev Рік тому

    так подробно разбирать джуновскую проблему... ну не знаю, насколько это целесообразно

    • @it-sin9k
      @it-sin9k  Рік тому

      сложно сказать какого уровня эта проблема. Но за 8 компаний, где местами были одни синьоры помидоры, я видел такого рода "ломаные" селекторы неоднократно

  • @beholderrk
    @beholderrk Рік тому

    Кайф

  • @TheProfessionalGambler
    @TheProfessionalGambler Рік тому +1

    Хороший ролик, спасибо. Возможно это больше не проблема редакса, а реакта и подхода иммутабельности. Хотя их уже и не разделить 😄

  • @user-no7sl1yk3f
    @user-no7sl1yk3f 9 місяців тому

    Эх... а на курсах яндекса по реакту про это не слово (

    • @it-sin9k
      @it-sin9k  9 місяців тому

      Это уже более продвинутый контент все же)

  • @MrVertu01
    @MrVertu01 Рік тому

    Чет даже не знал, что фильтр возвращает новую ссылку массива... эт сколько ж перфоманса упала из-за этого....

  • @AndriiKuftachov
    @AndriiKuftachov Рік тому

    Мне кажется, что тут проблема номер ноль именно в том, что люди непонятно зачем суют в глобальное состояние то, что там не должно быть.

    • @it-sin9k
      @it-sin9k  Рік тому +1

      Мне кажется это часто зависит от моды) Одно время пихали прям все подряд в стор, вспомнить тот же redux-form, который каждый чих в стор складывал. И все работало и большинство людей все устраивало. Потом началась новая мода, класть туда, только то что нужно. При этом на моих нескольких проектах были споры на эту тему между разрабами, кто то хотел как раньше все через Redux, а кто то был уже адэптем класть, только то что нужно :)

    • @AndriiKuftachov
      @AndriiKuftachov Рік тому

      @@it-sin9k но там вопрос больше в предсказуемости, чем в производительности.
      Вообще особого смысла в глобальном сторе нету, до того момента, когда приложение живёт само по себе и лишь иногда, по необходимости, общается с сервером.
      Подход в Ангуляр с сервисами и RxJS на много чище и понятнее.

    • @AndriiKuftachov
      @AndriiKuftachov Рік тому

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

  • @demiurgen13
    @demiurgen13 Рік тому

    Отлично разжевал) но текст призыва к комментарию нужно сделать длиннее, из серии "Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?" Чтобы за счет ленивых жоп продвигался контент алгоритмом - он вроде коммент из двух слов не засчитывает

    • @it-sin9k
      @it-sin9k  Рік тому

      Интересный момент) я хз честно говоря как работает алгоритм)

    • @brr3534
      @brr3534 Рік тому

      Уточка

    • @demiurgen13
      @demiurgen13 Рік тому

      @@it-sin9k Я тоже хз, но на тех каналах, где ребята шарят - они просят оставлять комменты длиной не менее 4-5 слов для продвижения

    • @it-sin9k
      @it-sin9k  Рік тому

      @@demiurgen13 О как) буду иметь ввиду на будущее) спасибо!)

  • @669pain
    @669pain Рік тому +3

    Получается что по своей сути Hook useSelector работает так же как и HOC connect. При любом изменении стора все подписчики оповещаются, но будет ли перерисован компонент или нет решает функция сравнения состояний

    • @it-sin9k
      @it-sin9k  Рік тому

      Абсолютно верно :)

    • @kusov4748
      @kusov4748 Рік тому

      Нет. Connect по дефолту использует shallow сравнение в отличие от сравнения по ссылке в useSelector. Поэтому в каком-то смысле useSelector это шаг назад в вопросе оптимизации ререндеров

    • @it-sin9k
      @it-sin9k  Рік тому

      @@kusov4748 ну не совсем так. mapStateToProps всегда возвращал объект, а внутри него уже был cars, currentUser и т.д. Т.е. список машин все равно проверялся по ссылке , а не проверялись машины внутри него. Поэтому идея осталась прежней

    • @kusov4748
      @kusov4748 Рік тому

      @@it-sin9k посмотрите доку redux. Там об этом пишут

    • @it-sin9k
      @it-sin9k  Рік тому

      @@kusov4748 никто и не спорит, что там об этом пишут) вот бы все еще доку читали и правильно понимали все моменты)

  • @igogs7095
    @igogs7095 Рік тому +3

    Тема важная. Вопрос, если передать функцию сравнения типо isEqual из lodash это спасет?

    • @it-sin9k
      @it-sin9k  Рік тому +2

      Да, это спасет. Я думаю в текущей ситуации даже функция shallowEqual спасет. Так как в самом массиве ссылки на машины одни и те же. Ну и конечно shallowEqual куда дешевле, чем глубокое сравнение

  • @antonmas3451
    @antonmas3451 9 місяців тому

    удивительно, при всем уважении, автор залезает в исходники и действительно глубоко старается разобраться что под капотом react и redux, и вот тут ты ждешь что у автора серьезный подход, но затем автор начинает рассказывать то чего не существует в официальной спецификации о передачах по значению и ссылке..Не знаю как Вас зовут, но интересует честный ответ(я понимаю что хомячки просто млеют от вашего ума и захейтят меня тут,к тому же этот комент вы удалите или не заметите) вопрос- Вам самому как? Вам ,которому важен доскональный подход, неудосужиться залезть в спеку и развенчать мифы!! почему у вас руки не дошли до спеки ecmascript и увидеть что там все передается по ссылке , но никогда по значению? надеюсь на понимание и честный ответ самому себе и возможно работу над ошибками, с той же педантичностью) (еще раз аппеляция к мама.ру, learn.js не подходит, только оф спецификация js)
    ps надеюсь буду услышан

    • @it-sin9k
      @it-sin9k  9 місяців тому

      Добрый день :)
      У вас какой-то негативный опыт общения в комментариях) не думаю, что на вас нападут "блеющие хомячки" или я удалю комментарий) наверное за всю историю канала я удалил 1-2 комментариям, где люди очень грубо обзывались
      По поводу передача по ссылке и по значению. У меня уже был тред на эту тему, достаточно длинный получился) Я размышляю об этом может отдельное видео сделать) Но я вообще не отношусь к этому как к большой проблеме. Нас так учат еще с универов и на работе и в интернете продолжают повторять эту мантру. Идея в том, что так проще людям донести мысль, а задача моих роликов как раз донести некую конкретную идею, а не все нюансы всего
      У меня были и другие интересные обсуждения, например то, что когда достаю значение из объекта по ключу это быстрее, чем перебирать массив через find. А тред растянулся на много сообщений, что вообще то на С под капотом движка тоже циклом ищет значение, поэтому все что я говорю это не правда
      Честно говоря я не знаю исходники движков) и спецификацию не знаю толком) и никогда не говорил, что я в этом разбираюсь) и мне приятно, что вы ждете от меня таких знаний) но их просто нет) если хотите поделиться с подписчиками своим опытом буду очень рад предоставить площадку и ресурсы для создания видео)

  • @LevShuroff
    @LevShuroff Рік тому

    Что если сравнивать объекты через Json.stringify, а не shallowEqual?

    • @it-sin9k
      @it-sin9k  Рік тому +1

      не думаю, что приведение объекта в строку дешевая операция

  • @user-gq3zw5ob3v
    @user-gq3zw5ob3v Рік тому

    Redux toolkit тоже таким страдает ?

  • @dimitro.cardellini
    @dimitro.cardellini Рік тому +1

    та-а-а-к ;)
    По-перше, бездоганна візуалізація -- от би я так міг малювати!
    По-друге, трохи обережно з термінами. Дуже часто терміни "store" та "state" використано один замість іншого. Це не дуже впливає на загальну суть, але на рівні коду різниця ключова. Посилання на "store" ніколи не змінюється, на відміну від посилання на "state", яке в ідеалі змінюється при кожному диспатчі.
    По-третє, власне useSelector та рендери -- це не про Redux, а про React та байдінг редаксу до React (react-redux), то ж тут трохи не зрозуміло в чому саму крихкість редаксу. Але це вже трохи буквоїдство

    • @it-sin9k
      @it-sin9k  Рік тому

      Комментарии все абсолютно верные)
      Когда я пишу сценарии к видео, очень сложно варьировать между совсем правильными четкими формулировками и известными всем словами. Вот иногда так и получается)

    • @SuhushinAS
      @SuhushinAS Рік тому

      Согласен на 100%
      Подход с иммутабельностью позволяет экономить на сравнениях состояний, иначе каждый раз приходилось бы делать deepEqual.
      А если используются какие-то преобразования, типа filter, то обязательно нужно делать кэширование, с reselect или useMemo.
      Вообще, мне кажется, большая часть проблем производительности связана не с самими библиотеками, а с тем, на сколько правильно декомпозируются компоненты.

  • @snatvb
    @snatvb Рік тому +1

    у меня на собесах разрабы часто валятся на таких вещах, хотя позиционируют себя как сеньёры помидоры)

    • @it-sin9k
      @it-sin9k  Рік тому +3

      Теперь будут лучше подготовлены) я слышал много отзывов, что по моим видосам готовятся к собесам))

    • @starwalker.odessa
      @starwalker.odessa Рік тому

      у тебя на собесах - только Ты читаешь с бумажки ))) Удобно ))) Господин Team Leader )))))))))))))))))))))))))) Хотелось бы посмотреть на твой код )

    • @it-sin9k
      @it-sin9k  Рік тому

      @@starwalker.odessa я честно говоря даже не знаю, что действительно эффективно спрашивать на собесах) все крайне субъективно)

    • @stasmamontov5788
      @stasmamontov5788 Рік тому

      ​@@starwalker.odessa это скорее тем, кто вместо прочтения доки полностью, читает быстрый старт и считает что хорошо знает библиотеку

    • @starwalker.odessa
      @starwalker.odessa Рік тому +1

      @@it-sin9k Я подскажу - гонять разраба (которые не раз горел в танках) по всем темам нет смысла. Я предлагаю программистам - готовиться в рамках заранее составленных тем, которые касаются проекта на который их набирают. Мне, за 15 лет в этом дурдоме, нет смысла запоминать весь этот trash, потому как сообщество каждые 2 года кардинально переодеваются в концепциях. И даже если я прав в том или ином вопросе - составляющие долгостроя от этого не поменяются. Нет смысла ждать заучку который зазубрил manual, мне важно только - сможет ли он достаточно подготовится перед началом проекта, на который его рассматривают.

  • @TheProfessionalGambler
    @TheProfessionalGambler Рік тому

    А какая разница плачу я от дохода или работодатель? Результат один и тот же.

    • @it-sin9k
      @it-sin9k  Рік тому +1

      Не совсем так. Есть вероятность, что вы прошли бы курсы за какие-то деньги и никуда не устроились, деньги бы просто сгорели. Тут вам дают бесплатно понять, ваше это или нет. После обучения, на какую зарплату бы вы пошли, хз. Кто то на 40к, кто-то на 50к, кто то найдет вообще стажировку бесплатную на 3 месяца. С этой стороны вам помогут устроиться сразу на максимально возможную вилку. Без их помощи маловероятно, что вы бы устроились, сразу на такую зарплату, таким образом они забирают те деньги, которые вы бы и так не получали, а вы по факту не платили за обучение.

  • @Son0fBeelzebub
    @Son0fBeelzebub 11 місяців тому

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

    • @it-sin9k
      @it-sin9k  10 місяців тому

      Если просветите как это работает, буду очень признателен))

    • @Son0fBeelzebub
      @Son0fBeelzebub 10 місяців тому

      @@it-sin9k в джсе все передается по референсу на референс. это можете прочитать где-нибудь на 2ality и некоторые блоги содержат сообщения разработчика джс брендона эйха. передача объекта и примитивного значения происходит одинаково. существуют данные в памяти или создаются, var a = "abc" - это несколько выражений, где "abc" и "a" являются оба ссылками на данные-объект типа строка в рантайме. когда мы передаем объект, то мы делаем то же самое. передаем ссылку на объект. а его структура - это лишь одно из проперти объекта в представлении рантайма. мы изменяем именно это поле, сама ссылка на объект сохраняется. у примитивных значения другой поведение. когда мы используем какие-либо операторы, например сложение, то мы получаем выражения, которые в сумме возвращают нам новое примитивное значение. остальное только явными примерами я бы показал лично, но вряд ли нам это нужно. почитайте про флаг --allow-natives-syntax, д8, jsvu, %DebugPrint %DebugPrintPtr и станет намного яснее.

    • @it-sin9k
      @it-sin9k  10 місяців тому

      звучит все разумно :)
      Вопрос только в следующем
      var a = 'abc'
      var b = 'abc'
      это 2 разных объекта типа строка, и когда мы сравниваем 2 разных объекта через ===. И это сравнение возвращает true. Как это описать как не сравнение по значению?

    • @Son0fBeelzebub
      @Son0fBeelzebub 10 місяців тому

      @@it-sin9k нет, как раз и а, и б - в этом случае - это ссылки на объект типа строка в памяти. поэтому, когда мв сравниваем а с б, то мы сравниваем 0х04fa37be === 0x04fa37be и получаем тру. просто поведение объектов налл/андефайнд/число/строка и так далее - иное, нежели у обычного объекта. то естт, это такие объекты, которые отдают свое значение, а не структуру.
      То есть, в случае общего выражения var a = "abc" выражение "abc" создает константную строку в хипе. иммутабельную. потом выражение в ответ отдает нам референс на эту строку. она уже есть, правильно? и, если она иммутабельна и константна, то зачем нам копия этой строки? не за чем. поэтому var b = "abc" - он находит уже эту строку в памяти и просто отдает тот же адрес) и связывает его с б. а потом при строгом сравнении сравниваем два одинаковых адреса

    • @it-sin9k
      @it-sin9k  10 місяців тому

      > и, если она иммутабельна и константна, то зачем нам копия этой строки? не за чем. поэтому var b = "abc" - он находит уже эту строку в памяти и просто отдает тот же адрес) и связывает его с б. а потом при строгом сравнении сравниваем два одинаковых адреса
      т.е. идея в том, что при создании одинаковой строки, оно находит, что такая строка уже создана и использует ту же ячейку в памяти? Звучит как достаточно дорогая операция для огромного проекте. А есть подтверждение где то такому поведению?

  • @starwalker.odessa
    @starwalker.odessa Рік тому

    Господа, а вам не кажется что вся эта шляпа от того, что кто-то внедрил моду на функциональное программирование? К примеру если React программу реализовать на классах + FLUX (подписка только на однопоточное событие, которое нас интересуют (предшественник redux)) ...да, приложение становится сложнее, ...но работает куда проще чем вся эта современная петрушка с функциональщиной и redux.

    • @_always_21
      @_always_21 Рік тому

      вечный холивар... так и до работы с чистым js/html дойти. будет ли быстрее работать? скорее всего - да. но вот скорость разработки...

    • @starwalker.odessa
      @starwalker.odessa Рік тому

      @@_always_21 Я ничего не говорил про чистый js... тут и на не чистом мало кто нормально программирует. Достаточно найти одно нормальное решение и пользоваться им. event dispatcher store + react === good! ...не вижу проблем отписываться от handler`ов в destructor`е... чем городить все эти hoooooooook`и.
      java - вообще не болеет подобными детскими проблемами. Так может лучше писать на java? И переводить его в JavaScript через Web Assemble? ...а не придурошный type script и прочие декорации )

  • @kronatankristof8804
    @kronatankristof8804 Рік тому

    это тулкитная "проблема". Если делать через connect, такой шняги нет.

    • @it-sin9k
      @it-sin9k  Рік тому

      ну здрасте, конечно есть :)

    • @kronatankristof8804
      @kronatankristof8804 Рік тому

      ​@@it-sin9k немного не так выразился. В коннектах люди обычно вменяемые редьюсеры пишут, согласно старым паттернам. А тулкиты народ юзает как в примерах написано. А там про второй параметр как-то редко пишут. На выходе имеем что имеем.

    • @it-sin9k
      @it-sin9k  Рік тому

      @@kronatankristof8804 Как по мне мало что изменилось) кто плохо писал, то так же и пишет, а кто старался тот и по прежнему старается)

  • @hihoho1578
    @hihoho1578 Рік тому

    Опять редакс 😢

    • @it-sin9k
      @it-sin9k  Рік тому +1

      Закончим с ним будем дальше рассматривать стейт менеджеры)

  • @gitraccoon
    @gitraccoon Рік тому

    Дякую, за зрозуміло донесену інформацію! Не знаю твого відношення до тієї країни, де я живу, але люди об’єднані одним горем (реактом) заслуговують на спілкування в однакових умовах

    • @it-sin9k
      @it-sin9k  Рік тому +1

      Спасибо! Я не понял, что имелось ввиду под фразой "заслуговують на спілкування в однакових умовах". Можете пояснить пожалуйста?

    • @gitraccoon
      @gitraccoon Рік тому

      @@it-sin9k Я мав на увазі що попри обставини в світі, я можу дивитися ваше відео і розуміти його як наче ми з однієї країни

    • @it-sin9k
      @it-sin9k  Рік тому +1

      @@gitraccoon да, я рад, что мы по прежнему можем коммуницировать на одном языке :) Я честно говоря, вообще во всем мире ввел бы единый язык))) так бы все друг друга чуть лучше бы понимали)

  • @bogdanshelomanov5668
    @bogdanshelomanov5668 Рік тому

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

    • @it-sin9k
      @it-sin9k  Рік тому

      Это видео не про решение ваших проблем, а скорее про более глубокое понимание инструментов, как они работают :)

  • @user-sj2yl7nw6u
    @user-sj2yl7nw6u Рік тому

    Отлично разжевал! Спасибо!

  • @dmitrykisel9564
    @dmitrykisel9564 Рік тому

    Отлично разжевал!

  • @darkside2436
    @darkside2436 Рік тому

    Отлично разжевал 😉

  • @apexnuts9785
    @apexnuts9785 Рік тому

    Отлично разжевал! Спасибо!