Все ли вы знаете о useSelector?

  Рет қаралды 19,460

АйТи Синяк

АйТи Синяк

Күн бұрын

Пікірлер: 80
@Retruntobase
@Retruntobase 2 жыл бұрын
Как всегда контент на высоте) Клево было бы послушать про reselect, а в частности про функцию createSelector из RTK. Спасибо!)
@it-sin9k
@it-sin9k 2 жыл бұрын
Обязательно будет ролик про reselect!)
@egamegadriveaaa
@egamegadriveaaa 2 жыл бұрын
Теперь я знаю как работает useSelector
@aaamre4840
@aaamre4840 2 жыл бұрын
useSelector с Reselect-ом отлично дополняет друг друга
@aleksandrzelenskiy4000
@aleksandrzelenskiy4000 2 жыл бұрын
Годный разбор, спасибо. Теперь я знаю как работает useSelector
@muratakmamedau7328
@muratakmamedau7328 2 жыл бұрын
Спасибо за контент Александр!
@geniamasanin8322
@geniamasanin8322 2 жыл бұрын
Отличный контент, не останавливайтесь)
@it-sin9k
@it-sin9k 2 жыл бұрын
Нет планов останавливаться, только вперед!)
@go_better
@go_better 7 ай бұрын
Большое спасибо. Классное видео
@ОлегСелин-ш9ы
@ОлегСелин-ш9ы 2 жыл бұрын
Спасибо! Очень познавательно!
@srjoyme2525
@srjoyme2525 2 жыл бұрын
Круто! Спасибо за объяснение useSelector!
@Alex__88
@Alex__88 Жыл бұрын
Спасибо! Теперь я знаю как работает useSelector
@alexeyshaykov
@alexeyshaykov 2 жыл бұрын
очень даже очень, спасибо
@osxenon
@osxenon 2 жыл бұрын
Большое спасибо, максимально полезный контент!
@it-sin9k
@it-sin9k 2 жыл бұрын
Спасибо!) Если поделитесь с коллегами, будем очень признательны!)
@hikarukun5126
@hikarukun5126 Жыл бұрын
Интересный видос 😊
@eugeneperekopskyi5857
@eugeneperekopskyi5857 2 жыл бұрын
Cool! Nice life hack
@ГарикВонави
@ГарикВонави 2 жыл бұрын
Офигенное видео!!!
@it-sin9k
@it-sin9k 2 жыл бұрын
Не забудьте поделиться им с вашими коллегами, мы будем очень признательны!)
@denistatarinov5395
@denistatarinov5395 2 жыл бұрын
крутой чел этот синяк)
@it-sin9k
@it-sin9k 2 жыл бұрын
Не могу не согласиться)
@КотМатроскин-х9ь
@КотМатроскин-х9ь 2 жыл бұрын
в целом было полезно я думаю, я даже пока не знаю для чего нужен этот useSelector правда
@TheTexPro
@TheTexPro Жыл бұрын
Спасибо большое!
@kspshnik
@kspshnik 2 жыл бұрын
Оч. круто. спасибо!
@SuleimanAliiev
@SuleimanAliiev 2 жыл бұрын
Крутяк, спасибо!
@19n1ght
@19n1ght 2 жыл бұрын
Спасибо! Хоть я и не использую Redux в повседневной разработке, все равно интересно узнавать подобные нюансы.
@it-sin9k
@it-sin9k 2 жыл бұрын
А какой стек у вас используется?) доберусь и до вашего стека может в будущем)
@19n1ght
@19n1ght 2 жыл бұрын
@@it-sin9k react + rxjs. Без сторонних стейт менеджеров
@it-sin9k
@it-sin9k 2 жыл бұрын
Есть группа людей, кто очень любит rxjs с реактом использовать, но я к сожалению еще не видел ни одного проекта, как это все работает. Постараюсь еще получить этот опыт как-нибудь :)
@19n1ght
@19n1ght 2 жыл бұрын
@@it-sin9k один раз попробовав rxjs уже не хочется от него отказываться :) Я не встречал хороших решений, которые позволяют "подружить" rxjs с реактом без редакса. Мы используем собственное решение. Возможно рано или поздно оно станет опенсорсным.
@it-sin9k
@it-sin9k 2 жыл бұрын
круто) если выложите в open source пишите, я может обзор на него сделаю)
@Владимир.П-е9о
@Владимир.П-е9о 2 жыл бұрын
А у нас в проекте столько полей требуется из стора, что приходится возвращать всегда объект, поэтому второй аргумент почти всегда используем const {items, activeItem} = useSelector(state => ({items: state.items, activeItem: state.activeItem}), shallowEqual); делать кучу useSelector тоже не очень, особенно когда некоторые поля используют одно общее поле, да и подписка на стор не бесплатная (shallowEqual тоже конечно). Про трюк с меморизацией, как я понимаю, его основная задача в том, чтобы не вызывать useSelector по рендеру компонента, вызванному естественным путем. Кажется не так критично, чтобы перестать писать анонимные функции в первом аргументе. На фоне того, что селектор вызывается на любое изменение стора, эта оптимизация кажется спичечной.
@it-sin9k
@it-sin9k 2 жыл бұрын
Прикольно, кто-то использует второй параметр) я на нашем текущем проекте тоже столкнулся с той проблемой, что иногда нужно и 5-10 полей использовать. Мы использовали правда reselect, вероятно и не очень оправданно использовали
@ДенисКаленик-н1м
@ДенисКаленик-н1м 2 жыл бұрын
Я однажды тоже был весьма удивлен, что деструктуризация объекта полученного из селектора может вызвать лишние рендеры (точнее не сама деструктуризация, а то что мы подписываемся на целый объект, а не только на свойства полученные через деструктуризацию). Но я просто делаю несколько useSelector - нечасто бывает больше 2-3, стараюсь декомпозировать компоненты. Нужно будет проверить как-нибудь, что быстрее - несколько useSelector или один, но со вторым параметром-функцией
@R1taz
@R1taz Ай бұрын
Вот и меня это ввело в замешательство, что как будто бы, смысла огромного, от вынесения анонимной функции за пределы компонента, особо нету
@from_brest2631
@from_brest2631 2 жыл бұрын
Лойс
@lacronts
@lacronts 2 жыл бұрын
Насколько я понял, в видео рассмотрена еще не вышедшая версия react-redux 8.x, потому что в актуальной на данный момент версии 7.2.6 исходники другие))
@it-sin9k
@it-sin9k 2 жыл бұрын
Это забавная история, как я готовил этот ролик. Сначала я изучал другие исходники useSelector. И когда уже собирался писать сценарий, react-redux накатил изменения) Я начал изучать заново, решил лучше рассказывать о актуальной версии. Закончил готовить ролик, записал аудио. И потом была React conf 20201, где они рассказали про новый АПИ 18-ой версии) короче поторопился я с выпуском темы)
@ВиталийКузнецов-щ3т7й
@ВиталийКузнецов-щ3т7й Жыл бұрын
Спасибо за объяснение (⌒‿⌒)
@_boolive_
@_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-sin9k
@it-sin9k 2 жыл бұрын
как раз этой темы планировал коснуться в следующем видео)
@sykalovandrey6090
@sykalovandrey6090 2 жыл бұрын
Мб у меня практики мало , но оч сложно..
@_iGer
@_iGer 2 жыл бұрын
Классное видео и много полезного Я вот только что-то туплю и не пойму 3ий пункт из части итогов Если мы из селектора не возвращаем новый объект, то что нам по хорошему нужно возвращать ?
@it-sin9k
@it-sin9k 2 жыл бұрын
Вопрос немного сложно составлен. Суть третьего пункта в том, что всегда нужно возвращать прежнюю ссылку на объект / массив, если хотите избежать неожиданных рендеров. Как именно это работает я рассказывал на примере mapStateToProps. Там логика точно такая же. Посмотрите вот это видео (kzbin.info/www/bejne/mKK0emyoe9JkqNE)
@ElenaSemakova-o4w
@ElenaSemakova-o4w 2 ай бұрын
а как быть, когда в селектор нужен параметр? я знаю два способа передачи 1) useSelector((state) => mySelector(state, param)) 2) useSelector(mySelector(param)) Какой из них лучше практиковать или что вообще посоветуете в данном случае?? Тот же вопрос при использовании createSelector
@NoName-oh9fh
@NoName-oh9fh 2 жыл бұрын
Здравствуйте, у вас есть успехи в изучении паттерна Репозиторий и применений его в проектах React? Очень хотелось бы услышать ваше мнение об этом и увидеть применение его.
@it-sin9k
@it-sin9k 2 жыл бұрын
Не первый раз, слышу в комментариях, что многим интересен этот паттерн. Я его не раз уже читал. Но честно говоря я использую немного другой подход. Тоже целый ряд абстракций и тому подобное :) Чтобы об этом паттерне рассказывать, нужно найти людей, которые в продакшене его используют и пообщаться)
@ПавелШамашов
@ПавелШамашов 2 жыл бұрын
Теперь я знаю как работает useSelector
@aspirine17
@aspirine17 2 жыл бұрын
Как всегда контент на высоте) Клево было бы послушать про reselect, а в частности про функцию createSelector из RTK. Спасибо!)
@it-sin9k
@it-sin9k 2 жыл бұрын
Спасибо!) Есть план сделать видео про createSelector чуть позже)
@almazkaliyev
@almazkaliyev 2 жыл бұрын
@АйТи Синяк нужен ваш совет) Я обычно делаю "корневую" ф-ю селектор для конкретного редюсера (selectNewsState = (state) => state.news;), далее его использую для других селекторов + createSelector из RTK (selectNewsIsLoading = createSelector(selectNewsState, (state) => state.isLoading). Насколько хорошо или плохо все селекторы создавать, используя createSelector? Я так понимаю под капотом reselect
@it-sin9k
@it-sin9k 2 жыл бұрын
Про reselect будет отдельное видео, там постараюсь поднять этот вопрос)
@ruslankosh1688
@ruslankosh1688 2 жыл бұрын
Теперь я знаю как работает useSelector
@ЕвгенийЧекердес
@ЕвгенийЧекердес 2 жыл бұрын
Теперь я знаю как работает useSelector
@NefedoffYuriy
@NefedoffYuriy 3 ай бұрын
Спасибо за отличный видос!
@andrewsam224
@andrewsam224 Жыл бұрын
Крутяк!!! Сразу подписка после просмотра.
@it-sin9k
@it-sin9k Жыл бұрын
Добро пожаловать на канал!
@GivisZurabovich
@GivisZurabovich 2 жыл бұрын
Тот момент когда не польщуешься редаксом(иногда лучше дрилить и композиции делать чем редакс), но видео отличное :)
@it-sin9k
@it-sin9k 2 жыл бұрын
Спасибо) А какой стек у вас на проекте?)
@Victoria-ly2ij
@Victoria-ly2ij 2 жыл бұрын
Спасибо! 💪
@Илья-ж8ч8о
@Илья-ж8ч8о 2 жыл бұрын
Не знал , теперь знаю)))
@TheEnd-hl4nh
@TheEnd-hl4nh 2 жыл бұрын
Спасибо!
@koreikin
@koreikin 2 жыл бұрын
Отличное и понятное объяснение. Подписка, лайк и жду много нового и полезного
@Pne-b8z
@Pne-b8z Жыл бұрын
Теперь я знаю как работает useSelector )))
@sergiogusto
@sergiogusto 2 жыл бұрын
Теперь я tochno знаю как работает useSelector
@СергейШепс-э7п
@СергейШепс-э7п 2 жыл бұрын
Очень интересно, ждем reselect :)
@artemeelemann317
@artemeelemann317 Жыл бұрын
Еще раз убедился в важности того, чтобы следить за тем когда значения сравниваются по ссылке в react. Спасибо за выпуск
@pavell53
@pavell53 2 жыл бұрын
Круто! Спасибо за объяснение useSelector!
@dm.hol.3624
@dm.hol.3624 2 жыл бұрын
Спасибо за науку.
@it-sin9k
@it-sin9k 2 жыл бұрын
Спасибо за просмотр.
@JSCoffeeBreak
@JSCoffeeBreak 2 жыл бұрын
Спасибо за ваш канал)
@19n1ght
@19n1ght 2 жыл бұрын
Неплохо было бы записать видео (может оно уже есть и я просто прошел мимо) на тему минусов Редакса. Я не о многословности (оно решается с помощью Redux Toolkit), а о том, что Редакс может создавать излишние связи между разными компонентами в проекте.
@it-sin9k
@it-sin9k 2 жыл бұрын
Есть мысль такая, если есть более детальные примеры недостатков Redux я был бы рад их тоже добавить в будущее видео :) или пришлите на почту материалы, которые у вас есть) blue.sin9k@gmail.com
@dmitriybraginets6750
@dmitriybraginets6750 2 жыл бұрын
Отличный разбор и что самое главное на основе этого разбора разработчики могут увидеть что «лезть в исходники» это очень полезно ;)
@it-sin9k
@it-sin9k 2 жыл бұрын
Спасибо :) это одна из идей моих видео, помочь разработчикам не бояться исходников
Reselect не так прост как кажется!
15:41
АйТи Синяк
Рет қаралды 13 М.
когда не обедаешь в школе // EVA mash
00:57
Brawl Stars Edit😈📕
00:15
Kan Andrey
Рет қаралды 55 МЛН
escape in roblox in real life
00:13
Kan Andrey
Рет қаралды 86 МЛН
Nastya and balloon challenge
00:23
Nastya
Рет қаралды 64 МЛН
Компонент высшего порядка в React простым языком
10:53
Дмитрий Герасимов - о разработке в сфере IT просто
Рет қаралды 4,7 М.
Все ли вы знаете о React key?
8:47
АйТи Синяк
Рет қаралды 38 М.
Асинхронная работа с Redux Toolkit и createAsyncThunk
42:24
Михаил Непомнящий
Рет қаралды 106 М.
Самый скользкий механизм в Redux
12:29
АйТи Синяк
Рет қаралды 14 М.
Способы разработки веб-сайтов
25:03
Vallek: фронтенд и образование
Рет қаралды 13 М.
Какая настоящая цена useMemo?
10:29
АйТи Синяк
Рет қаралды 26 М.
All useEffect Mistakes Every Junior React Developer Makes
22:23
Почему удалять StrictMode плохая идея?
9:30
АйТи Синяк
Рет қаралды 17 М.
НОВЫЙ REACT 18 ВЫШЕЛ
20:55
Ulbi TV
Рет қаралды 108 М.
когда не обедаешь в школе // EVA mash
00:57