относительно react-router?
                  
                  
                
чиго то там в нем не было🤔 уже чет не вспомню
А нельзя кажется получить доступ к хистори для проксирования навигации не из реакт компонентов
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Как по мне, этому место как раз в компонентах, так что это ок в этом плане Хотя, конечно, это не очень гибко🤔
<Redirect /> - это верх идиотизма, просто декларативность головного мозга
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Я считаю, что тянуть роутинг в стм, например, это бред, мы же за "отделение логики от представления"
Ну вот роутинг это чистая логика
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Имеешь право
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Точнее как, ясно, что это логика, но на мой взгляд точно не того уровня, чтобы пихать ее в стм
1. Я не упоминал СТМ, а только сказал про использование ВНЕ реакта 2. Не вижу ничего тяжелого положить это нагрузку на СТМ, в чем порблема?
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Я говорю не о "тяжести", а о том, что это работа уровня представления, на мой взгляд
Ты можешь ограничить логику роутинга только представлением?
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Удобно ли хранить всю логику роутинга в реакте?
это от задачи и обстоятельств зависит
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  На мой взгляд - да Я считаю, что роутинг - это чисто деталь слоя представления
Зависит, но будет удобно только когда у тебя роуты статические ну максимум с переменными из урла. Как только начинаются таски с кондишенал редикретами от запросов, то становится больно с этой "декларативностью" И это не беря в учет ssr
Ну вот давай простой таск. Нужно сделать запрос, но вначале нужно чекнуть креды и если их нет, то редирект на логин, после ответа апихи, редирект куда то или если ошибка то на логин. Как будешь реализовывать такое?
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Получу результат запроса и буду делать редиректы из нужного компонента🤷🏻♂️
Меня вот эта фраза интересует кодом "буду делать редиректы из нужного компонента🤷🏻♂️"
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Заюзаю history для этого, код писать лень) Мой поинт в том, что делать я это буду в компоненте А у wouter есть хук useLocation, который возвращает метод setLocation, если я правильно понял - это то же самое, что history.push
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Почему не <Redirect /> ? Тогда у тебя во вьюху прокрадется императивный код а ля if (smth) history.push()
ну да сайд эффекты не круто но с ними приходится жить
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Это можно завернуть в какой-то хук, который сделает это все декларативным (как в примере из wouter) И, опять же, я говорил не об императивности, а о том, что, на мой взгляд, роутинг - ответственность слоя представления, потому предпочитаю с ним работать из компонентов
 
                      
                      
                    Ну так вот тут бизнес логика прокралась в представление
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  setLocation - это бизнес-логика?
да вызов сетлокейшн это бизнес логика, ну так как зачастую там еще будет развилка куда редиректать
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Я так не считаю. Это логика, конечно, но, опять же, я считаю, что она ближе к слою представления. Страницы - это то, как представляются данные, урлы могут меняться, страницы могут меняться, данные и работа с ними при этом может оставаться неизменной
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Сегодня я хочу, чтобы у меня было три страницы и делаю редиректы на основе каких-то данных, а завтра объединю две страницы в одну, например, при этом изменится то, как и где я представляю данные, и все)
роутинг !== страницы Представь что тебе нужно проксировать из инпута поиска товара в квери стринг. Это как то связано с вьюхой?
Завтра поменяются требования для запросов некторых, что нужна авторизация и ты пойдешь везеде менять эту логику в компонентах, или в хуке и это свидетельсвтует о том что это не логика представления
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Мы же не говорим о запросах, и я не говорил, что "за запросы из компонентов", получение данных - ответственность транспортного слоя, который тоже является деталью реализации, о которой бизнес-логика знать ничего не должна, а роутинг - ответственность слоя представления) Грубо говоря, я против, чтобы что-то кроме компонентов, которые непосредственно взаимодействуют с DOM, хранилось там, где я работаю с бизнесс-логикой
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Это как если бы вам orm диктовала, куда редиректить пользователя при ошибке на беке)
Так если ты не будешь делать запросы в компонентах то как будешь делать редирект?
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Опираясь на данные, которые этот компонент получает🤷🏻♂️ Ну, типа, надо смотреть конкретные сценарии, я просто не на столько мотивирован в результате этой дискуссии, чтобы сейчас бежать писать код)
Шо там того кода if (props.smt) history.push() Еще разик а теперь представь что props.smt это результат запроса какого либо и изменились правила и если пришел особый тип ответа то нужно редиректить в другое место, что изменишь?
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  А если изменился формат данных, которые отображает компонент, что будете менять?
Компонент. Но формат не менялся, появилось дополнительное условие Например если пришел пустой массив то редирект в другое место
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Отлично, почему менять это где-то вне реакта лучше, чем внутри реакта?
Ровно по той же причине что и запросы вне компонентов лучше чем внутри
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Не вижу связи, запросы - это способ получения данных из внешнего мира, о котором компонент не должен знать, история - это чисто браузерное апи Я не считаю компоненты реакта чисто "версткой", компонент - это и логика тоже, так вот почему логика изменения урла, на котором отображено какое-то конкретное состояние - это ответственность НЕ слоя представления (компонентов)?
Роутинг !== браузерное апи Роутинг это комбинация состояния и видимости компонентов + проекция в урл\хистори (в случае с браузерного окружения)
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Я сказал, что history - это браузерное апи
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Замечательно, пускай этим занимается слой представления Потому, что видимость или не видимость чего-то - это, как раз, его задача, по-моему)
Да все верно, но состояние урла\стека_хистори не отвественность вьюхи
 Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Volodymyr
                          Klimov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Состояние стека истории - это ответственность браузера, мы просто пользуемся этим апи. history - это ведь уже "сервис", который внутри инкапсулирует работу с низкоуровневой штукой
Вот я и говорю что не вьюха должна оперировать этим сервисом, от него она должна получать только стейт ну и максимум декларативные Линки
Обсуждают сегодня