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

Кто-То пробовал wouter роутер? Как впечатления, есть какие-то видимые преимущества/недостатки

относительно react-router?

49 ответов

18 просмотров

чиго то там в нем не было🤔 уже чет не вспомню

А нельзя кажется получить доступ к хистори для проксирования навигации не из реакт компонентов

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
А нельзя кажется получить доступ к хистори для про...

Как по мне, этому место как раз в компонентах, так что это ок в этом плане Хотя, конечно, это не очень гибко🤔

Volodymyr Klimov
Как по мне, этому место как раз в компонентах, та...

<Redirect /> - это верх идиотизма, просто декларативность головного мозга

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
<Redirect /> - это верх идиотизма, просто декларат...

Я считаю, что тянуть роутинг в стм, например, это бред, мы же за "отделение логики от представления"

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
Имеешь право

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

Volodymyr Klimov
Точнее как, ясно, что это логика, но на мой взгляд...

1. Я не упоминал СТМ, а только сказал про использование ВНЕ реакта 2. Не вижу ничего тяжелого положить это нагрузку на СТМ, в чем порблема?

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
1. Я не упоминал СТМ, а только сказал про использо...

Я говорю не о "тяжести", а о том, что это работа уровня представления, на мой взгляд

Volodymyr Klimov
Я говорю не о "тяжести", а о том, что это работа у...

Ты можешь ограничить логику роутинга только представлением?

Volodymyr Klimov
Не понял вопрос

Удобно ли хранить всю логику роутинга в реакте?

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
Удобно ли хранить всю логику роутинга в реакте?

На мой взгляд - да Я считаю, что роутинг - это чисто деталь слоя представления

Stanislav
это от задачи и обстоятельств зависит

Зависит, но будет удобно только когда у тебя роуты статические ну максимум с переменными из урла. Как только начинаются таски с кондишенал редикретами от запросов, то становится больно с этой "декларативностью" И это не беря в учет ssr

Volodymyr Klimov
На мой взгляд - да Я считаю, что роутинг - это чис...

Ну вот давай простой таск. Нужно сделать запрос, но вначале нужно чекнуть креды и если их нет, то редирект на логин, после ответа апихи, редирект куда то или если ошибка то на логин. Как будешь реализовывать такое?

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
Ну вот давай простой таск. Нужно сделать запрос,...

Получу результат запроса и буду делать редиректы из нужного компонента🤷🏻‍♂️

Volodymyr Klimov
Получу результат запроса и буду делать редиректы и...

Меня вот эта фраза интересует кодом "буду делать редиректы из нужного компонента🤷🏻‍♂️"

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
Меня вот эта фраза интересует кодом "буду делать р...

Заюзаю history для этого, код писать лень) Мой поинт в том, что делать я это буду в компоненте А у wouter есть хук useLocation, который возвращает метод setLocation, если я правильно понял - это то же самое, что history.push

Volodymyr Klimov
Заюзаю history для этого, код писать лень) Мой пои...

Почему не <Redirect /> ? Тогда у тебя во вьюху прокрадется императивный код а ля if (smth) history.push()

Dmitriy Shuleshov
Почему не <Redirect /> ? Тогда у тебя во вьюху пр...

ну да сайд эффекты не круто но с ними приходится жить

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
Почему не <Redirect /> ? Тогда у тебя во вьюху пр...

Это можно завернуть в какой-то хук, который сделает это все декларативным (как в примере из wouter) И, опять же, я говорил не об императивности, а о том, что, на мой взгляд, роутинг - ответственность слоя представления, потому предпочитаю с ним работать из компонентов

Volodymyr Klimov
screenshot

Ну так вот тут бизнес логика прокралась в представление

Volodymyr Klimov
setLocation - это бизнес-логика?

да вызов сетлокейшн это бизнес логика, ну так как зачастую там еще будет развилка куда редиректать

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
да вызов сетлокейшн это бизнес логика, ну так как ...

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

Volodymyr-Klimov Автор вопроса
Volodymyr Klimov
Я так не считаю. Это логика, конечно, но, опять же...

Сегодня я хочу, чтобы у меня было три страницы и делаю редиректы на основе каких-то данных, а завтра объединю две страницы в одну, например, при этом изменится то, как и где я представляю данные, и все)

Volodymyr Klimov
Я так не считаю. Это логика, конечно, но, опять же...

роутинг !== страницы Представь что тебе нужно проксировать из инпута поиска товара в квери стринг. Это как то связано с вьюхой?

Volodymyr Klimov
Сегодня я хочу, чтобы у меня было три страницы и д...

Завтра поменяются требования для запросов некторых, что нужна авторизация и ты пойдешь везеде менять эту логику в компонентах, или в хуке и это свидетельсвтует о том что это не логика представления

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
Завтра поменяются требования для запросов некторых...

Мы же не говорим о запросах, и я не говорил, что "за запросы из компонентов", получение данных - ответственность транспортного слоя, который тоже является деталью реализации, о которой бизнес-логика знать ничего не должна, а роутинг - ответственность слоя представления) Грубо говоря, я против, чтобы что-то кроме компонентов, которые непосредственно взаимодействуют с DOM, хранилось там, где я работаю с бизнесс-логикой

Volodymyr-Klimov Автор вопроса
Volodymyr Klimov
Мы же не говорим о запросах, и я не говорил, что "...

Это как если бы вам orm диктовала, куда редиректить пользователя при ошибке на беке)

Volodymyr Klimov
Мы же не говорим о запросах, и я не говорил, что "...

Так если ты не будешь делать запросы в компонентах то как будешь делать редирект?

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
Так если ты не будешь делать запросы в компонентах...

Опираясь на данные, которые этот компонент получает🤷🏻‍♂️ Ну, типа, надо смотреть конкретные сценарии, я просто не на столько мотивирован в результате этой дискуссии, чтобы сейчас бежать писать код)

Volodymyr Klimov
Опираясь на данные, которые этот компонент получае...

Шо там того кода if (props.smt) history.push() Еще разик а теперь представь что props.smt это результат запроса какого либо и изменились правила и если пришел особый тип ответа то нужно редиректить в другое место, что изменишь?

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
Шо там того кода if (props.smt) history.push() ...

А если изменился формат данных, которые отображает компонент, что будете менять?

Volodymyr Klimov
А если изменился формат данных, которые отображает...

Компонент. Но формат не менялся, появилось дополнительное условие Например если пришел пустой массив то редирект в другое место

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
Компонент. Но формат не менялся, появилось дополни...

Отлично, почему менять это где-то вне реакта лучше, чем внутри реакта?

Volodymyr Klimov
Отлично, почему менять это где-то вне реакта лучше...

Ровно по той же причине что и запросы вне компонентов лучше чем внутри

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
Ровно по той же причине что и запросы вне компонен...

Не вижу связи, запросы - это способ получения данных из внешнего мира, о котором компонент не должен знать, история - это чисто браузерное апи Я не считаю компоненты реакта чисто "версткой", компонент - это и логика тоже, так вот почему логика изменения урла, на котором отображено какое-то конкретное состояние - это ответственность НЕ слоя представления (компонентов)?

Volodymyr Klimov
Не вижу связи, запросы - это способ получения данн...

Роутинг !== браузерное апи Роутинг это комбинация состояния и видимости компонентов + проекция в урл\хистори (в случае с браузерного окружения)

Volodymyr-Klimov Автор вопроса
Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
Роутинг !== браузерное апи Роутинг это комбинация...

Замечательно, пускай этим занимается слой представления Потому, что видимость или не видимость чего-то - это, как раз, его задача, по-моему)

Volodymyr Klimov
Замечательно, пускай этим занимается слой представ...

Да все верно, но состояние урла\стека_хистори не отвественность вьюхи

Volodymyr-Klimov Автор вопроса
Dmitriy Shuleshov
Да все верно, но состояние урла\стека_хистори не о...

Состояние стека истории - это ответственность браузера, мы просто пользуемся этим апи. history - это ведь уже "сервис", который внутри инкапсулирует работу с низкоуровневой штукой

Volodymyr Klimov
Состояние стека истории - это ответственность брау...

Вот я и говорю что не вьюха должна оперировать этим сервисом, от него она должна получать только стейт ну и максимум декларативные Линки

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта