Reselect для оптимизации Redux стора

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

Михаил Непомнящий

Михаил Непомнящий

2 жыл бұрын

Когда необходимо преобразовать данные перед выборкой или собрать информацию с нескольких ответвлений стора библиотека Reselect одновременно упрощает задачу и делает ее более оптимальной. Redux Toolkit в свою очередь содержит Reselect в качестве дочерней зависимости.
Код из видео github.com/michey85/redux-too...
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Поддержка канала:
/ mishanep
www.tinkoff.ru/rm/nepomnyasch...
paypal.me/mishanep

Пікірлер: 64
@user-vm2db5cq1g
@user-vm2db5cq1g Жыл бұрын
Отличный контент! Автору спасибо!
@TheMaxfri
@TheMaxfri 2 жыл бұрын
Михаил, спасибо большое за ваши видео. Было бы интересно послушать про продвинутый rtk query, отлавливание ошибок и с чем ещё можно столкнуться в реальной работе.
@artman9592
@artman9592 2 жыл бұрын
Тоже интересно
@andrewsam224
@andrewsam224 5 ай бұрын
Да про ошибки было бы круто, тоже завис на этой теме!!!!
@user-px9pp4nz5m
@user-px9pp4nz5m 2 жыл бұрын
Михаил очень понравился Ваш курс по Redux, ждем курс по TS)
@olegsh2888
@olegsh2888 2 жыл бұрын
За Redux Toolkit всегда лайк! Забавно, что именно сегодня на кодревью получил замечание, что надо переписать на createSelector свой код)) Так что, можно сказать, что это не просто теория, а вполне себе рабочая задача)
@bagga_lev
@bagga_lev 2 жыл бұрын
Большое спасибо =) Очень хорошо объясняете
@KGMelis
@KGMelis 2 жыл бұрын
Михаил, спасибо большое! благодаря вашего контента токо понял весь прелесть тулкита и слайсов
@user-qj6ns8ot3l
@user-qj6ns8ot3l 2 жыл бұрын
Классное объяснение. Спасибо!
@andrewsam224
@andrewsam224 5 ай бұрын
Как я Вам благодарен Михаил!!!
@TRIZ-Bogatyregold
@TRIZ-Bogatyregold 10 ай бұрын
Михаил спасибо за видео. Полезный контент redux reselect!
@user-rz1kq8oz4f
@user-rz1kq8oz4f 2 жыл бұрын
Большое спасибо! отличное видео
@fpsska2028
@fpsska2028 2 жыл бұрын
Спасибо, Михаил 😌
@disconnect355
@disconnect355 2 жыл бұрын
Спасибо, было полезно!
@nizom333
@nizom333 2 жыл бұрын
Спасибо отличный видео
@mikhail_shokun
@mikhail_shokun 2 жыл бұрын
Красава как всегда!
@user-kn3ut1sh2o
@user-kn3ut1sh2o 2 жыл бұрын
Спасибо, было полезно! (Reselect)
@dirty_arkady
@dirty_arkady 2 жыл бұрын
Спасибо!
@yaroslavom-js6983
@yaroslavom-js6983 2 жыл бұрын
Спасибо )
@vladimirplyukhin5234
@vladimirplyukhin5234 2 жыл бұрын
Михаил, спасибо вам! Вы стали уже как наставник мне! Потому что живя в сельской местности, нет особой возможности покупать платные курсы. А вы очень хорошо объясняете и помогаете тем самым незаменимо! Как устроюсь на джуна, обязательно куплю у вас курсы на Udemy в знак благодарности!
@localhost666
@localhost666 Жыл бұрын
Устроился?
@vladimirplyukhin5234
@vladimirplyukhin5234 Жыл бұрын
@@localhost666 Уже да, но ищу дальше
@localhost666
@localhost666 Жыл бұрын
@@vladimirplyukhin5234 обещание сдержал?
@vladimirplyukhin5234
@vladimirplyukhin5234 Жыл бұрын
@@localhost666 ахахаха мэни, ты что здесь как интернет-совесть? Но да, есть там неплохой курс по Redux.
@localhost666
@localhost666 Жыл бұрын
@@vladimirplyukhin5234 неблагодарный
@artman9592
@artman9592 2 жыл бұрын
спасибо
@alexleshenko
@alexleshenko Жыл бұрын
Только подумал, а че я ресилект забыл в своем проекте и видос выскочил, значит мысль верна 😂😂
@kruboy1605
@kruboy1605 2 жыл бұрын
молодець!
@romeshfarhod-zoda8892
@romeshfarhod-zoda8892 2 жыл бұрын
красава
@user-fv4xc4qp2h
@user-fv4xc4qp2h 2 жыл бұрын
Михаил, снимите, пожалуйста, видео про обработку ошибок - как лучше отображать пользователю, что некий запрос не сработал - может какой-нибудь попап в углу экрана для общих случаев, и отдельно для частных. + Очень хочется видео про мульти запросы на API (наверное есть возможность через редакс или по старинке циклом по массиву)
@dispeltr1183
@dispeltr1183 2 жыл бұрын
для отображений ошибок юзеру есть либа react-toastify. Про мульти запросы посмотри в сторону Promise.all и Promise.race
@MrMomomoy
@MrMomomoy 2 жыл бұрын
Михаил, спасибо за очередное отличное видео. Скажите пожалуйста, не планируете ли снять видео на тему вебсокетов?
@mishanep
@mishanep 2 жыл бұрын
Здравствуйте. Про вебсокеты пока не планирую. Почти не имел с ним дела в реальной практике.
@MrMomomoy
@MrMomomoy 2 жыл бұрын
@@mishanep , понял. не сочтите за наглость, но может снимете видео про Firebase авторизацию с помощью гугла, или соцсетей? Думаю, многим будет эта тема интересна
@user-nv6fm4pl4w
@user-nv6fm4pl4w 2 жыл бұрын
@@MrMomomoy Так уже Михаил снимал такое видео)
@nizom333
@nizom333 2 жыл бұрын
TOP
@johndoe034
@johndoe034 Жыл бұрын
Михаил, спасибо за отличный контент! Есть пара вопросов, буду благодарен за ответ: 1. Насколько сейчас распространена практика использования Redux Toolkit в коммерческих проектах по сравнению с обычным Redux? 2. Насколько актуальными остаются саги в связи с популярностью Redux Toolkit, в котором Thunk идет из коробки?
@mishanep
@mishanep Жыл бұрын
С сагами мне в принципе не доводилось работать, поэтому сложно ответить на этот вопрос. Они решают много задач и уже по проекту надо смотреть актуальность использование этого дополнения к редаксу. Касаемо тулкита, то он всё чаще и чаще встречается в свежих проектах. Легаси, конечно, не спешит переезжать на современные рельсы, но тулкит намного актуальнее. С ним проще работать и он очевиднее типизируется.
@alexvoid8717
@alexvoid8717 Жыл бұрын
Для меня после прочтения документации редакса осталась не вполне понятной тема размера кэша. В документации редакса рекомендуют передавать id в качестве пропсов и в потомке селектором доставать данные сущности (если без rtk query), в react-redux доке: when the selector is used in multiple component instances and depends on the component's props, you need to ensure that each component instance gets its own selector instance. В случае, если передаем только id, а потом выбираем по id, нужно создавать factory function?
@maksymkyryliuk492
@maksymkyryliuk492 2 жыл бұрын
Михаил, прекрасное видео Но у меня вопрос как можно добавить к тулкиту Redux-Axios-Middleware сколько смотрел документацию не нашел этого, просто это было бы очень полезно если хочешь Interceptor к запросам сделать
@---Maksim---
@---Maksim--- 2 жыл бұрын
А что там сложного? Создаешь отдельно service с конфигом interceptor-а для axios, вместо fetch-а юзаешь свой service в slice.
@maksymkyryliuk492
@maksymkyryliuk492 2 жыл бұрын
@@---Maksim--- Хмм... Спасибо, надо попробовать👍🏻
@user-fv4xc4qp2h
@user-fv4xc4qp2h 2 жыл бұрын
Перенёс селекторы)
@user-wr4br7sr9q
@user-wr4br7sr9q Жыл бұрын
Кто нибудь знает как мемоизировать отдельное значение из Redux? Все функции со стейтом я с помощью reselect реализовал, но отдельные значения все равно вызывают ререндер?
@kosechok1
@kosechok1 Жыл бұрын
Михаил, спасибо подскажите а как все это будет в случае если список подгружается через апи? у меня получается что функция начинает применяться раньше чем происходит асинхронный thunk?
@mishanep
@mishanep Жыл бұрын
Приветствую, Константин. Reselect ничего не знает про санки. Если значение в сторе изменилось, то оно обновится и в UI. Возможно вы меняете значение в момент запроса, а потом повторно - уже при получении данных.
@kosechok1
@kosechok1 Жыл бұрын
@@mishanep я понимаю, что он не знает. Просто он начинает выполняться до того как данные успевают поступить в стор. Что-то не с работой с промисом. По этому интересно было бы посмотреть на ваш урок
@alexvoid8717
@alexvoid8717 Жыл бұрын
@@kosechok1 селекторы запускаются при каждом диспатче в стор, если я правильно понял вопрос (useSelector() will also subscribe to the Redux store, and run your selector whenever an action is dispatched). Санки, созданные через createAsyncThunk, диспатчат .pending/.fulfilled/.rejected
@ssurrokk
@ssurrokk 2 жыл бұрын
спасибо . Как называется плагин который выделяет блоки кода у тебя?
@mishanep
@mishanep 2 жыл бұрын
Приветствую. Не совсем понимаю о каком конкретно выделении идет речь.
@ssurrokk
@ssurrokk 2 жыл бұрын
@@mishanep когда блок выбираешь, то рисуется линия влево и вниз, выделяя таким образом его
@romanmed9035
@romanmed9035 Жыл бұрын
вот вообще непонятно в какой момент что сделано что стало совсем не так. ибо альтернативес было и перерендеривалось, а потом убрали и оно стало все хорошо. а на саму суть ушло пара секунд.
@vitya.obolonsky
@vitya.obolonsky 9 ай бұрын
Так а причем тема к активному фильтру? Rerender не должен бить. При отправке действия useSelector() выполняется эталонное сравнение предыдущего значения результата селектора и текущего значения результата. Если они разные, компонент будет вынужден выполнить повторный рендеринг.
@iGotton
@iGotton 2 жыл бұрын
+
@dmitry7464
@dmitry7464 2 жыл бұрын
useSelector проверяет ссылки и они у вас каждый раз новые, кто-нибудь. разбирался как это работает внутри?
@dmitry7464
@dmitry7464 2 жыл бұрын
Reselect checks for changes using reference equality (===). This means that you have to respect the Redux expectation that your store’s properties are immutable. If your reducers modify some data within the state.items array without returning a new object reference, the selector will not detect a new argument, and you will receive a cached item when you expect to receive the newest one.
@mishanep
@mishanep 2 жыл бұрын
Там есть вариант сравнения по дефолту, но при желании можно собственный алгоритм предложить.
@user-vk1id6md6o
@user-vk1id6md6o Жыл бұрын
плохо что без тайпскрипта
@lesters
@lesters Жыл бұрын
я думаю еще стоило упомянуть что createSelector нельзя использовать в самих редьюсерах
@morph2049
@morph2049 2 жыл бұрын
спасибо
Базовое тестирование Redux-приложения
14:15
Михаил Непомнящий
Рет қаралды 8 М.
Асинхронная работа с Redux Toolkit и createAsyncThunk
42:24
Михаил Непомнящий
Рет қаралды 101 М.
Please be kind🙏
00:34
ISSEI / いっせい
Рет қаралды 91 МЛН
Khóa ly biệt
01:00
Đào Nguyễn Ánh - Hữu Hưng
Рет қаралды 19 МЛН
Final muy inesperado 🥹
00:48
Juan De Dios Pantoja
Рет қаралды 16 МЛН
RTK Query или альтернативный Redux по работе с API
31:55
Михаил Непомнящий
Рет қаралды 94 М.
Новые хуки useTransition и useDeferredValue в React 18
22:17
Михаил Непомнящий
Рет қаралды 21 М.
Ч3. Внезапный Live coding. React. HTML. JavaScript
43:29
Типизация для Redux Toolkit
22:24
Михаил Непомнящий
Рет қаралды 40 М.
Авторизация в React-приложении с Firebase и Redux-Toolkit
47:24
Михаил Непомнящий
Рет қаралды 82 М.
Тестирование React-компонентов с Redux
19:33
Михаил Непомнящий
Рет қаралды 14 М.
Предзагрузка данных через роутинг
24:48
Михаил Непомнящий
Рет қаралды 28 М.
ВСЕ ПРО REDUX ЗА 30 МИН (REDUX TOOLKIT, REDUX THUNK, REDUX SAGA)
29:10
ДЖАВАСКРИПТИЗЕРЫ | КИРИЛЛ ПОЗДНЯКОВ
Рет қаралды 6 М.
Урок 5. JavaScript. Promise. Что это, как работает (+ пример)
23:18