169 похожих чатов

Методологический вопрос, господа. Это редьюсер (один из). Ему нужны данные с

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

Скажите, а как среди бородатых и умудренных дядек принято разруливать сию проблему? Не пихать же весь редьюсер в промис!

31 ответов

14 просмотров

Никак. Это не проблема, таков редакс. Приложение стартует на пустых стейтах и должно валидно отработать на первом рендере с пустым массивом. Когда придут данные, массив заполнится и приложение перерисуется.

А редьюсер в промис пихать нельзя. Редьюсер — чистая функция, он должен всегда возвращать значение

Vladimir-Samoilenko Автор вопроса
Ivan 🧑‍🚀
Никак. Это не проблема, таков редакс. Приложение с...

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

где-то повыше делаешь `if(props.users.length === 0) return <Skeleton />`и все - не будет попыток получить доступ к несуществующим данным

Vladimir-Samoilenko Автор вопроса
Victor Rusakovich
где-то повыше делаешь `if(props.users.length === 0...

Не понял. Это как-то заблокирует функцию редьюсера?

Vladimir Samoilenko
Не понял. Это как-то заблокирует функцию редьюсера...

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

Если коротко то редакс синхронен и чтобы все работало так как ты ожидаешь нужно использовать redux thunk или redux saga

Vladimir-Samoilenko Автор вопроса
Victor Rusakovich
нет, это в компоненте писать в редаксе желательно ...

ну, то есть, как я примерно и говорил - крутим спиннер в компоненте, пока не прилетит что-то вменяемое.

Vladimir-Samoilenko Автор вопроса
Роман
Именно

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

Vladimir Samoilenko
Да, читал как-то мельком, что есть такие и не совс...

Они скорее тормозят екшны А редусеры отрабатывают на каждый екшн

Vladimir Samoilenko
То есть, я должен в соответствующем компоненте пос...

Нет, в редьюсере хранить поле «загружаются ли сейчас данные и менять это поле в Пномпень начала и окончания загрузки. В компоненте слушать это поле и показывать спиннер. Ну и не запромисить фетч, а задиспатчить асинхронный (если redux-thunk) или обычный (если redux-saga) экшен, чтобы мидлваря начала фетчить

Vladimir Samoilenko
Да, читал как-то мельком, что есть такие и не совс...

Они его не тормозят. Нельзя тормозить редакс

Vladimir-Samoilenko Автор вопроса
Ivan 🧑‍🚀
Они его не тормозят. Нельзя тормозить редакс

Но за счет чего-то они же согласовывают как-то редакс со всей остальной асинхронщиной?

Ivan 🧑‍🚀
Нет, в редьюсере хранить поле «загружаются ли сейч...

тебе надо по дефолту переменную isFetching делать false потом после того как запрос прошел мкенять на тру

Vladimir Samoilenko
Но за счет чего-то они же согласовывают как-то ред...

Выхватывают из потока редакса всю асинхронщину и крутят её сбоку. А в редакс диспатчат обычную синхронщину. Но потом

Vladimir Samoilenko
Но за счет чего-то они же согласовывают как-то ред...

редакс санки возвращают по моему екшин который потом диспатчит редакс ,там все построено на замыкании

Vladimir-Samoilenko Автор вопроса
Ivan 🧑‍🚀
Выхватывают из потока редакса всю асинхронщину и к...

но прежде чем пулять синхронщину в редакс, нужно дождаться, пока асинхронщина сбоку докрутится.

Vladimir Samoilenko
но прежде чем пулять синхронщину в редакс, нужно д...

Всё так. И в редьюсеры ничего не попадает, пока асинхронщина не докрутится. Просто сходи посмотри тутор какой-нибудь по мидлварям редакса, а потом по redux-thunk

Vladimir Samoilenko
но прежде чем пулять синхронщину в редакс, нужно д...

Достаточно понять, как работает мидлваря. В коде redux-thunk всего около десяти строк кода, они станут очевидны после вкуривания концепции мидлварей

Vladimir-Samoilenko Автор вопроса
Vladimir Samoilenko
около десяти строк кода вся библа???

да,можно при желании самому написать)

Vladimir Samoilenko
около десяти строк кода вся библа???

о, сколько нам открытий чудных готовит мир реакст стейт менеджеров )) погугли про https://github.com/storeon/storeon

Vladimir-Samoilenko Автор вопроса
Ivan 🧑‍🚀
screenshot

Му-ха-ха!

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта