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

Ребят, давайте обсудим, такая ситуация: Компонент форма логин и пароль

отправляет запрос серверу на авторизацию, при успехе <Suspense><lazy><Suspence> подгружает основной контент в котором есть шапка с именем аккаунта...имя аккаунта фетчится дополнительным запросом когда уже пользователь авторизован. Если обновить страницу, то через сессию авторизация не спадает и показывается сразу <Suspence> контент.
Вопрос: где лучше фетчить имя аккаунта? перед отрисовкой <Suspence> пробрасывая ему через пропсы имя аккаунат или внутри <Suspence> в useEffect() вызывая при этом два раза ререндер?

26 ответов

14 просмотров

Почему не спасает?

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

Александр-Potkin Автор вопроса
Ivan 🧑‍🚀
Лучше отделять модель от представления — не фетчит...

"не фетчить из компонентов" тогда где фетчить? если не используется Redux thunk

Александр-Potkin Автор вопроса
Ivan 🧑‍🚀
Лучше отделять модель от представления — не фетчит...

допустим в "контейнерной" компоненте?норм же?

Александр Potkin
"не фетчить из компонентов" тогда где фетчить? есл...

Например, из redux thunk. Или из mobx-модели. Или из эффекта в effector. Или из реакции в reatom

Александр Potkin
допустим в "контейнерной" компоненте?норм же?

Компонент — это он. Если ты фетчишь из компонента-контейнера, то ты фетчишь из компонента

Александр Potkin
допустим в "контейнерной" компоненте?норм же?

На одних только компонентах нельзя построить адекватную архитектуру. Без адекватной архитектуры первый вопрос не имеет смысла — в любом случае получится херово

Александр-Potkin Автор вопроса
Ivan 🧑‍🚀
Например, из redux thunk. Или из mobx-модели. Или ...

этот контейнер же не играет роли никакой в представлении...а если приложение это только форма и имя аккаунта и что тогда? все равно подключать thunkи и ему подобные?

Александр Potkin
этот контейнер же не играет роли никакой в предста...

Т.е. тот момент, что для приложения только с одной формой реакт тянуть вас не смущает, а вот thunk конечно же перебор? Вы сейчас сам условия придумываешь какие то, что бы оправдать fetch в компонентах.

Александр-Potkin Автор вопроса
Dmitry Kulakov
Т.е. тот момент, что для приложения только с одной...

считаешь что dispatch(someThunk) в useEffect круче чем fetch?

Dmitry Kulakov
В 99% случаев - определенно да.

Да не подстраховывайся, в 100% случаях.

Александр-Potkin Автор вопроса
Тимофей 🛴
Да не подстраховывайся, в 100% случаях.

Тимофей, почему так считаешь? вот если рассматривать небольшое SPA

Александр Potkin
Тимофей, почему так считаешь? вот если рассматрива...

Разделение ответственностей, fetch даже в thunk не должно быть, там будет вызов api.getSmth

Александр Potkin
Почему?

Чище компоненты + если надо делать fetch по разным условиям, с разными параметрами, то от вида дублирования fetch тошнить начнет после второго условия.

Александр Potkin
этот контейнер же не играет роли никакой в предста...

При условии, что задача заключается только в форме, то для такой формы нецелесообразно подключать даже реакт. Достаточно создать входную точку с html и подключать туда модули. Модуля получится два — транспорт и логика формы. Какой диспатч, какой компонент. А если приложение собирается расти (так бывает почти всегда), то нужно планировать наперёд.

Александр Potkin
этот контейнер же не играет роли никакой в предста...

Собрать это всё можно парселем без конфигурации. Захотел — тс подключил сразу. И погнал. С тс’ом будет проще потом подключать реакт.

Александр-Potkin Автор вопроса
Ivan 🧑‍🚀
При условии, что задача заключается только в форме...

Спасибо, разобрался. Вопрос был в образовательных целях, хотел узнать что другие думают по этому поводу

лично я всегда делаю веб приложения так, чтобы сначала все работало из консоли браузера без отображения каких либо компонентов через react, vue, svelte и т.д. потом уже, когда бизнес логика заработала, начинаю прикручивать представление через тот или иной фреймворк/либу, которая позволяет отрендерить все это

Александр Potkin
tdd разработка типа

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

Ivan 🧑‍🚀
На одних только компонентах нельзя построить адекв...

А есть пример правильной архитектуры? Мне понять, где и как правильно делать

🅅aleriy 🄺obzar
это опыт, который нарабатывается годами

А можно узнать, что Вы поняли на второй год, но не понимали в первый?)

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

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

Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта