Китикет
Так все же просто: есть ярн-лок, а есть пэкедж-лок, зависит от пакетного менеджера
Access denied
Правда node-sass через npm не ставится и поставил через ярн
Access denied
Oleg
это нормально, что useReducer мутирует initial state? делал просто dispatch resetAll, возвращал ...initialState, получил изменения.
Vadim
Vadim
видимо сам как-то мутируешь
Vadim
и зачем вообще делать ...?
Vadim
достаточно просто вернуть initialState
Anonymous
нужно перед тем как откроется компонент через Route сделать запрос на сервер и получить флаг isLogged, если он false — сделать редирект на другую страницу.
использую такую конструкцию, но она работает только при рендере самого роутинга
<Route
{...also}
render={props => (isLogged === true ? <Component {...props} /> : <Redirect to="/login" />)}
/>
Китикет
Китикет
А isAuthorized (isLogged) должен быть в стейт менеджере или в подобном месте
Rustam
Anonymous
Anonymous
аля админ и модер
Ilya
Anonymous
Anonymous
суть в том, что чтобы мне понять верный ли токен, мне на каждом privateRouter нужно делать запрос
Anonymous
когда стр загружается — она больше не перерендеривается, соответственно и запрос не делается
Andrey
Anonymous
раньше в реакт роуте была функция, но она теперь не работает
Andrey
Andrey
и?
Andrey
Китикет
Anonymous
и?
если я сделаю в самом начале запрос на isLogged
Rustam
Он все равно не сможет к апишке запросы сделать, какая разница что у него показывается
Andrey
Anonymous
Китикет
Ну ты покажешь ему, а после этого через секунду токен истечет
Китикет
Что делать будем?
Китикет
Обратно разрендеривать?
Anonymous
я уверен, реализация того что я хочу сделать занимает не много кода
Andrey
Китикет
Китикет
Хаах
Andrey
Andrey
это не задача роутинга
Andrey
это часть бизнеслогики
Китикет
Просто ты какой-то запрос хочешь посылать в роуте, это дичь
Anonymous
задача роутинга проверить токен и пустить на страницу
Китикет
Этим должна логика заниматься, которая куда выше лежит
Китикет
Роутинг лишь получает флаг, авторизован пользователь или нет
Китикет
И все
Китикет
Или роль, если это надо
Daniil
и зачем так делать дефолт юзеру?
Vadim
Andrey
Rustam
Потому что там на каждой странице есть запросы к апишке
Rustam
Придет запрос к апишке, ответ 401 ставишь стейт не авторизован и на стр авторизации кидаешь
Anonymous
зачем мне писать логику, которая будет работать как перехватчик ерроров 401 в каких-то несвязанных функциях и логике, если я могу прописать это логику в роутинге один раз для всего?
Rustam
В аксиосе вешаешь общий обработчик ошибок на все запросы, диспатчишь экшен и там дальше пошло
Rustam
В одном месте будет логика
Rustam
Там где роутер подписываешься на это состояние и убираешь недоступные роуты
Rustam
Я не говорю что так правильно, один из подходов
Rustam
На то и реакт библиотека, никто тебе не диктует как делать правильно
Anonymous
я конечно благодарен за столь большой фидбек касательно реализации хендла ошибки 401
Anonymous
с этим у меня проблем нет
Anonymous
вопрос все равно открытый
Rustam
Ну сделай тогда обёртку над роутом, общую и в нее пихай этот запрос
Rustam
Если тебе так нужно
Rustam
Ты же не будешь у каждого роута писать такую лабуду
Anonymous
вопрос открыт:
const isLogged = store.token !== null;
return (
<Route
{...also}
render={props => (isLogged ? <Component {...props} /> : <Redirect to="/login" />)}
/>
);
при первой заходе на роут — идет редирект, в следующем случае компонент не рендерится
Andrey
вопрос все равно открытый
ты не тот вопрос открываешь)
впрочем, не буду отнимать возможности погулять по граблям, если не хочешь делать нормально
до этого надо дойти, понимаю)
Китикет
Bogdan
подскажите, как стайледы типизировать? именно ф-ю
Китикет
Ilya
Anonymous
Anonymous