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

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

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

26 ответов

16 просмотров

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

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

Александр-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
это опыт, который нарабатывается годами

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта