Как всегда контент на высоте) Клево было бы послушать про reselect, а в частности про функцию createSelector из RTK. Спасибо!)
@it-sin9k2 жыл бұрын
Обязательно будет ролик про reselect!)
@egamegadriveaaa2 жыл бұрын
Теперь я знаю как работает useSelector
@aaamre48402 жыл бұрын
useSelector с Reselect-ом отлично дополняет друг друга
@aleksandrzelenskiy40002 жыл бұрын
Годный разбор, спасибо. Теперь я знаю как работает useSelector
@muratakmamedau73282 жыл бұрын
Спасибо за контент Александр!
@geniamasanin83222 жыл бұрын
Отличный контент, не останавливайтесь)
@it-sin9k2 жыл бұрын
Нет планов останавливаться, только вперед!)
@go_better7 ай бұрын
Большое спасибо. Классное видео
@ОлегСелин-ш9ы2 жыл бұрын
Спасибо! Очень познавательно!
@srjoyme25252 жыл бұрын
Круто! Спасибо за объяснение useSelector!
@Alex__88 Жыл бұрын
Спасибо! Теперь я знаю как работает useSelector
@alexeyshaykov2 жыл бұрын
очень даже очень, спасибо
@osxenon2 жыл бұрын
Большое спасибо, максимально полезный контент!
@it-sin9k2 жыл бұрын
Спасибо!) Если поделитесь с коллегами, будем очень признательны!)
@hikarukun5126 Жыл бұрын
Интересный видос 😊
@eugeneperekopskyi58572 жыл бұрын
Cool! Nice life hack
@ГарикВонави2 жыл бұрын
Офигенное видео!!!
@it-sin9k2 жыл бұрын
Не забудьте поделиться им с вашими коллегами, мы будем очень признательны!)
@denistatarinov53952 жыл бұрын
крутой чел этот синяк)
@it-sin9k2 жыл бұрын
Не могу не согласиться)
@КотМатроскин-х9ь2 жыл бұрын
в целом было полезно я думаю, я даже пока не знаю для чего нужен этот useSelector правда
@TheTexPro Жыл бұрын
Спасибо большое!
@kspshnik2 жыл бұрын
Оч. круто. спасибо!
@SuleimanAliiev2 жыл бұрын
Крутяк, спасибо!
@19n1ght2 жыл бұрын
Спасибо! Хоть я и не использую Redux в повседневной разработке, все равно интересно узнавать подобные нюансы.
@it-sin9k2 жыл бұрын
А какой стек у вас используется?) доберусь и до вашего стека может в будущем)
@19n1ght2 жыл бұрын
@@it-sin9k react + rxjs. Без сторонних стейт менеджеров
@it-sin9k2 жыл бұрын
Есть группа людей, кто очень любит rxjs с реактом использовать, но я к сожалению еще не видел ни одного проекта, как это все работает. Постараюсь еще получить этот опыт как-нибудь :)
@19n1ght2 жыл бұрын
@@it-sin9k один раз попробовав rxjs уже не хочется от него отказываться :) Я не встречал хороших решений, которые позволяют "подружить" rxjs с реактом без редакса. Мы используем собственное решение. Возможно рано или поздно оно станет опенсорсным.
@it-sin9k2 жыл бұрын
круто) если выложите в open source пишите, я может обзор на него сделаю)
@Владимир.П-е9о2 жыл бұрын
А у нас в проекте столько полей требуется из стора, что приходится возвращать всегда объект, поэтому второй аргумент почти всегда используем const {items, activeItem} = useSelector(state => ({items: state.items, activeItem: state.activeItem}), shallowEqual); делать кучу useSelector тоже не очень, особенно когда некоторые поля используют одно общее поле, да и подписка на стор не бесплатная (shallowEqual тоже конечно). Про трюк с меморизацией, как я понимаю, его основная задача в том, чтобы не вызывать useSelector по рендеру компонента, вызванному естественным путем. Кажется не так критично, чтобы перестать писать анонимные функции в первом аргументе. На фоне того, что селектор вызывается на любое изменение стора, эта оптимизация кажется спичечной.
@it-sin9k2 жыл бұрын
Прикольно, кто-то использует второй параметр) я на нашем текущем проекте тоже столкнулся с той проблемой, что иногда нужно и 5-10 полей использовать. Мы использовали правда reselect, вероятно и не очень оправданно использовали
@ДенисКаленик-н1м2 жыл бұрын
Я однажды тоже был весьма удивлен, что деструктуризация объекта полученного из селектора может вызвать лишние рендеры (точнее не сама деструктуризация, а то что мы подписываемся на целый объект, а не только на свойства полученные через деструктуризацию). Но я просто делаю несколько useSelector - нечасто бывает больше 2-3, стараюсь декомпозировать компоненты. Нужно будет проверить как-нибудь, что быстрее - несколько useSelector или один, но со вторым параметром-функцией
@R1tazАй бұрын
Вот и меня это ввело в замешательство, что как будто бы, смысла огромного, от вынесения анонимной функции за пределы компонента, особо нету
@from_brest26312 жыл бұрын
Лойс
@lacronts2 жыл бұрын
Насколько я понял, в видео рассмотрена еще не вышедшая версия react-redux 8.x, потому что в актуальной на данный момент версии 7.2.6 исходники другие))
@it-sin9k2 жыл бұрын
Это забавная история, как я готовил этот ролик. Сначала я изучал другие исходники useSelector. И когда уже собирался писать сценарий, react-redux накатил изменения) Я начал изучать заново, решил лучше рассказывать о актуальной версии. Закончил готовить ролик, записал аудио. И потом была React conf 20201, где они рассказали про новый АПИ 18-ой версии) короче поторопился я с выпуском темы)
@ВиталийКузнецов-щ3т7й Жыл бұрын
Спасибо за объяснение (⌒‿⌒)
@_boolive_2 жыл бұрын
В чистом виде он ещё проще. function useSelector(selector){ const store = useStore(); const [state, setState] = useState(selector(store.getState())); useEffect(() => { return store.subscribe(() => { const result = selector(store.getState()); if (!shallowequal(state, result)) { setState(result); } }); }, [state]); return state; }
@it-sin9k2 жыл бұрын
как раз этой темы планировал коснуться в следующем видео)
@sykalovandrey60902 жыл бұрын
Мб у меня практики мало , но оч сложно..
@_iGer2 жыл бұрын
Классное видео и много полезного Я вот только что-то туплю и не пойму 3ий пункт из части итогов Если мы из селектора не возвращаем новый объект, то что нам по хорошему нужно возвращать ?
@it-sin9k2 жыл бұрын
Вопрос немного сложно составлен. Суть третьего пункта в том, что всегда нужно возвращать прежнюю ссылку на объект / массив, если хотите избежать неожиданных рендеров. Как именно это работает я рассказывал на примере mapStateToProps. Там логика точно такая же. Посмотрите вот это видео (kzbin.info/www/bejne/mKK0emyoe9JkqNE)
@ElenaSemakova-o4w2 ай бұрын
а как быть, когда в селектор нужен параметр? я знаю два способа передачи 1) useSelector((state) => mySelector(state, param)) 2) useSelector(mySelector(param)) Какой из них лучше практиковать или что вообще посоветуете в данном случае?? Тот же вопрос при использовании createSelector
@NoName-oh9fh2 жыл бұрын
Здравствуйте, у вас есть успехи в изучении паттерна Репозиторий и применений его в проектах React? Очень хотелось бы услышать ваше мнение об этом и увидеть применение его.
@it-sin9k2 жыл бұрын
Не первый раз, слышу в комментариях, что многим интересен этот паттерн. Я его не раз уже читал. Но честно говоря я использую немного другой подход. Тоже целый ряд абстракций и тому подобное :) Чтобы об этом паттерне рассказывать, нужно найти людей, которые в продакшене его используют и пообщаться)
@ПавелШамашов2 жыл бұрын
Теперь я знаю как работает useSelector
@aspirine172 жыл бұрын
Как всегда контент на высоте) Клево было бы послушать про reselect, а в частности про функцию createSelector из RTK. Спасибо!)
@it-sin9k2 жыл бұрын
Спасибо!) Есть план сделать видео про createSelector чуть позже)
@almazkaliyev2 жыл бұрын
@АйТи Синяк нужен ваш совет) Я обычно делаю "корневую" ф-ю селектор для конкретного редюсера (selectNewsState = (state) => state.news;), далее его использую для других селекторов + createSelector из RTK (selectNewsIsLoading = createSelector(selectNewsState, (state) => state.isLoading). Насколько хорошо или плохо все селекторы создавать, используя createSelector? Я так понимаю под капотом reselect
@it-sin9k2 жыл бұрын
Про reselect будет отдельное видео, там постараюсь поднять этот вопрос)
@ruslankosh16882 жыл бұрын
Теперь я знаю как работает useSelector
@ЕвгенийЧекердес2 жыл бұрын
Теперь я знаю как работает useSelector
@NefedoffYuriy3 ай бұрын
Спасибо за отличный видос!
@andrewsam224 Жыл бұрын
Крутяк!!! Сразу подписка после просмотра.
@it-sin9k Жыл бұрын
Добро пожаловать на канал!
@GivisZurabovich2 жыл бұрын
Тот момент когда не польщуешься редаксом(иногда лучше дрилить и композиции делать чем редакс), но видео отличное :)
@it-sin9k2 жыл бұрын
Спасибо) А какой стек у вас на проекте?)
@Victoria-ly2ij2 жыл бұрын
Спасибо! 💪
@Илья-ж8ч8о2 жыл бұрын
Не знал , теперь знаю)))
@TheEnd-hl4nh2 жыл бұрын
Спасибо!
@koreikin2 жыл бұрын
Отличное и понятное объяснение. Подписка, лайк и жду много нового и полезного
@Pne-b8z Жыл бұрын
Теперь я знаю как работает useSelector )))
@sergiogusto2 жыл бұрын
Теперь я tochno знаю как работает useSelector
@СергейШепс-э7п2 жыл бұрын
Очень интересно, ждем reselect :)
@artemeelemann317 Жыл бұрын
Еще раз убедился в важности того, чтобы следить за тем когда значения сравниваются по ссылке в react. Спасибо за выпуск
@pavell532 жыл бұрын
Круто! Спасибо за объяснение useSelector!
@dm.hol.36242 жыл бұрын
Спасибо за науку.
@it-sin9k2 жыл бұрын
Спасибо за просмотр.
@JSCoffeeBreak2 жыл бұрын
Спасибо за ваш канал)
@19n1ght2 жыл бұрын
Неплохо было бы записать видео (может оно уже есть и я просто прошел мимо) на тему минусов Редакса. Я не о многословности (оно решается с помощью Redux Toolkit), а о том, что Редакс может создавать излишние связи между разными компонентами в проекте.
@it-sin9k2 жыл бұрын
Есть мысль такая, если есть более детальные примеры недостатков Redux я был бы рад их тоже добавить в будущее видео :) или пришлите на почту материалы, которые у вас есть) blue.sin9k@gmail.com
@dmitriybraginets67502 жыл бұрын
Отличный разбор и что самое главное на основе этого разбора разработчики могут увидеть что «лезть в исходники» это очень полезно ;)
@it-sin9k2 жыл бұрын
Спасибо :) это одна из идей моих видео, помочь разработчикам не бояться исходников