Size: a a a

React — русскоговорящее сообщество

2020 July 07

BA

Bogdan Aleksandrovic... in React — русскоговорящее сообщество
Eugene Sternin
Мы сейчас это решили очень странно - рендерим каждую новую страницу поверх старой.
Когда возвращаешься назад, последний слой снимаешься и попадаешь на уже отрендереную страницу.
Но это прям очень не очень.
это стек называется, ну в веб такое себе, а если я подряд открою твою страницу, она в стек залезет? если нет данных, ты никак скрол не запомнишь, сохранить данные куда то, тогда проскролишь
источник

NE

Nikita E in React — русскоговорящее сообщество
Eugene Sternin
Коллеги, кто нибудь решал проблему подобную? Хочу при возвращении по роутеру на предыдущую страницу, сохранять положение скролла.
То есть скроллил человек список, провалился в него, вернулся обратно на список и попал на то же положение скролла, как и было.
React router предлагает писать свой компонент под это описывая примерную логику


https://reactrouter.com/web/guides/scroll-restoration
источник

AL

Aleksander Lemyagov in React — русскоговорящее сообщество
А есть ли в react-router некий handling при переходе на другой url?
источник

NE

Nikita E in React — русскоговорящее сообщество
Если кратко - юзаешь sessionStorage, пишешь туда скролл и сохраняешь если изменился путь. И восстанавливаешь скролл при триггере навигации по history back forward
источник

ES

Eugene Sternin in React — русскоговорящее сообщество
Bogdan Aleksandrovich
это стек называется, ну в веб такое себе, а если я подряд открою твою страницу, она в стек залезет? если нет данных, ты никак скрол не запомнишь, сохранить данные куда то, тогда проскролишь
Не, стек у нас работает хорошо, просто из-за него приходится весь контент делать position: fixed. Да и на перфоманс бьет.
источник

NE

Nikita E in React — русскоговорящее сообщество
Aleksander Lemyagov
А есть ли в react-router некий handling при переходе на другой url?
Ты можешь хуком брать путь, который будет обновляться при переходе - и совать его в депенденси эффекта
источник

AL

Aleksander Lemyagov in React — русскоговорящее сообщество
Nikita E
Ты можешь хуком брать путь, который будет обновляться при переходе - и совать его в депенденси эффекта
не использую хуки. Подключен редакс.
источник

NE

Nikita E in React — русскоговорящее сообщество
Aleksander Lemyagov
не использую хуки. Подключен редакс.
Там тоже можно вынуть путь)
источник

AL

Aleksander Lemyagov in React — русскоговорящее сообщество
Nikita E
Там тоже можно вынуть путь)
путь можно, да. Но уже после того как произошел переход
источник

NE

Nikita E in React — русскоговорящее сообщество
В реакте не практикуются подписки на ивенты таким образом же), все должно быть в потоке
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
Aleksander Lemyagov
не использую хуки. Подключен редакс.
виу-виу-виу полиция темы "редакс против хуков"
пока что предупреждение, не нарушайте больше
источник

AL

Aleksander Lemyagov in React — русскоговорящее сообщество
А мне нужен до перехода, допустим, сделать запрос на сервер и если сервер сказал ОК, то показать страницу. иначе кинуть на 403
источник

DP

Dmitry Petrov in React — русскоговорящее сообщество
Aleksander Lemyagov
А мне нужен до перехода, допустим, сделать запрос на сервер и если сервер сказал ОК, то показать страницу. иначе кинуть на 403
по-моему роутер не умеет ждать промис, по крайней мере удобно, так что лучше всего обренуть в компонент гвард, какой-нибудь
источник

DP

Dmitry Petrov in React — русскоговорящее сообщество
Aleksander Lemyagov
А мне нужен до перехода, допустим, сделать запрос на сервер и если сервер сказал ОК, то показать страницу. иначе кинуть на 403
а в данном случае, через глобальный обработчик ошибок просто сделать, у axios и fetch есть interceptors, если нет такого, то просто через замыкания
источник

NE

Nikita E in React — русскоговорящее сообщество
Aleksander Lemyagov
А мне нужен до перехода, допустим, сделать запрос на сервер и если сервер сказал ОК, то показать страницу. иначе кинуть на 403
Это лучше менеджить в слое с сайд эффектами редакса ?..
источник

AL

Aleksander Lemyagov in React — русскоговорящее сообщество
Dmitry Petrov
а в данном случае, через глобальный обработчик ошибок просто сделать, у axios и fetch есть interceptors, если нет такого, то просто через замыкания
я сейчас делал так что когда происходит переход на страницу, то вызывается экшн загрузки страницы. Но тут штука у том что это загрузку можно ж не написать и вход на страницу есть у всех тогда.
источник

DP

Dmitry Petrov in React — русскоговорящее сообщество
Aleksander Lemyagov
я сейчас делал так что когда происходит переход на страницу, то вызывается экшн загрузки страницы. Но тут штука у том что это загрузку можно ж не написать и вход на страницу есть у всех тогда.
ну да, пользователь на долю секунды увидит страницу, но без данных, с сервера прийдет ответ с ошибкой, и пользователь полетит на 403
источник

AL

Aleksander Lemyagov in React — русскоговорящее сообщество
Dmitry Petrov
ну да, пользователь на долю секунды увидит страницу, но без данных, с сервера прийдет ответ с ошибкой, и пользователь полетит на 403
Если нет кода, который запускает проверку через сервер, то доступ на страницу есть у всех
источник

AL

Aleksander Lemyagov in React — русскоговорящее сообщество
Nikita E
Это лучше менеджить в слое с сайд эффектами редакса ?..
action нужно вызвать ручками. без этого он не заработает
источник

DP

Dmitry Petrov in React — русскоговорящее сообщество
Aleksander Lemyagov
Если нет кода, который запускает проверку через сервер, то доступ на страницу есть у всех
но когда данные будут запрашиваться, случится обработчик же?
источник