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

Всем привет Вчера спрашивал, где лучше отлавливать ошибки 1) Еррро

боундари
2) В редакс
3) ...
Мне ответили, что в редакс
но я не могу найти информации почему именно в редакс лучше
как на счёт производительности и тд
Можете поделится ссылкой или несколько комментариев почему так?

13 ответов

20 просмотров

лучше ошибки не кидать что бы их не отлавливать

Taras- Автор вопроса

ну АПИ все-таки думает о другом те же 401 должны быть

ловить на слое апи такое и преобразовывать к типу с 2 мя возможными состояниями типо "maybe" или "either" google it

Taras- Автор вопроса

ну а все же по существу где лучше их отлавливать ?

ближе к месту где возникают, на слое апи

Taras- Автор вопроса

то есть на фронте вообще не нужно? )

нужно, на слое апи, говорю же)

у тебя есть модуль, класс, функция типо api.get('...')

Ну на 401 я делал специальную redux-sagа, которую вызывал из других redux-saga и в которую передавал конфигурацию запроса (AxiosRequestConfig), validationShema (на yup) проверяющую соответсвует ли данные полученные от сервера тому что мы от него ожидаем. ВНутри этой saga выполнялась проверка на 401 и предпринимались действия в зависимости от логики приложения: например обнуление isAuthenticated, дополнительные запросы для обновление токенов ит.д. В общем все что обычно делают внутри axios Interceptor, а также осуществлялась проверка на валидность ответа от сервера. Преимуществом такого поддхода по сравнению с axios interceptor являеться то что логиrа приложения не выходит за пределы redux-saga/ Если ошибка не касалась тех моментов которые подлежали обработке, внутри saga request executor, то она передавалась на верх в сагу из который был сделан вызов saga request executor. Используя данный подход удалось избежать значительного дублирования кода, при работе с запросами к серверу.

Также это можно сделать на санках, но я их не люблю)))

Taras- Автор вопроса

понял, то есть писать типа такого не нужно?

Ну лично я action фактически использую как сеттеры, которые устанавливают какое либо значение в стэйте соответсвующего редьюсера. А всю логику предпочитаю делать в saga в совокупности с redux-toolkit получается очень вкусно. А вы похоже используете классический редакс, вот его лучше таки не использовать. СЛишком много бойлерплэйта и мы за него не получаем никаких преимуществ.

Taras- Автор вопроса

спасибо за развернутый ответ!)

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта