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

Какой лучше? Хз. Попробуй все, потом нам расскажешь

24 ответов

16 просмотров

Какой с точки зрения архитектурной чистоты будет лучше или так скажем "не костыль"

Все знают, что лучше последний, но он слишком трудно реализуем. Первый худший, но самый легкий и часто реализуемый

Максим- Автор вопроса
Valhalla Awaits
Какой с точки зрения архитектурной чистоты будет л...

Мне кажется ты просто ищешь совет где тебе скажут примени doSomething() и все заработает

Valhalla Awaits
Какой с точки зрения архитектурной чистоты будет л...

2 хуже потому, что порождает неявные зависимости, -- чтобы были явными, надо юзать 4. 3 хуже потому, что создаёт непонятный поток данных и лишние рендеры 1 лучше потому, что общепринят. 4 лучше потому, что самый расширяемый и оптимизированный

Максим
Мне кажется ты просто ищешь совет где тебе скажут ...

а кто так не хочет?)) makeProjectAndEarnOneMillionDollarsInSecond() и готово

Valhalla Awaits
По сути скорее всего так..

в твоем случае, самый легкиц способ - первый. второй и третий костыли чисто чтобы заработало и постепенно проект утонул в бездне

koichi
в твоем случае, самый легкиц способ - первый. втор...

Ну это бог с ним, меня уже другие мысли волнуют. У меня же не единственного такой кейс появился где компоненты на одном уровне, а данные как то передать красиво надо. Другие также голову ломают и варианты перебирают или юзают архитектурное решение которое предотвращает такие ситуации? Тут наверно ответ про модуль будет или ещё что-то?

Valhalla Awaits
Ну это бог с ним, меня уже другие мысли волнуют. У...

Основная проблема твоего проекта -- использование хуков для получения данных

Максим- Автор вопроса
Valhalla Awaits
React-query и rtk-query в топку?

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

Valhalla Awaits
Ну это бог с ним, меня уже другие мысли волнуют. У...

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

Sergey Grishchenko
Да, собачье дерьмо Вообще, твоя проблема максимал...

Условно, features/my-feature/model const Context = createContext<MyProps | null>(null) export const useMyQuery = () => { const props = useContext(Context) if (!props) { throw new Error(...) } return useQuery(...) } features/my-feature/ui const MyComponent1 = () => { const { data } = useMyQuery() .... } const MyComponent2 = () => { const { data } = useMyQuery() ... } export const MyFeature = { Wrapper: Context.Provider, MyComponent1, MyComponent2, } ...ну и юзаешь потом... <MyFeature.Wrapper> <MyFeature.MyComponent1 /> <MyFeature.MyComponent2 />

Sergey Grishchenko
Да, собачье дерьмо Вообще, твоя проблема максимал...

А как на счет создавать контекст для модели, чтоб не пропсами кидаться, а через него? Имеет место быть? (создаются на уровне страниц)

Sergey Grishchenko
Да, собачье дерьмо Вообще, твоя проблема максимал...

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

Vladimir Voronov
А как на счет создавать контекст для модели, чтоб ...

а зачем тебе контекст для модели? ты же просто лишнюю оболочку создашь и все

Valhalla Awaits
Бл, меня одного напрягает что для передачи данных ...

Это не его же функционал, ты ведь просто пытаешься устранить проп дриллинг. Вообще это очень зависит от того как у тебя конкретно приложение построено. Может быть есть и более подходящие способы в контексте твоего стека

Vladimir Voronov
А как на счет создавать контекст для модели, чтоб ...

Неявность тоже порождает, если сделать неправильно. Тут всё упирается в границы модулей и в их интерфейс. Я считаю, что контекст не должен быть их интерфейсом -- он может быть лишь внутренней реализацией. Интерфейсом же должна быть явная передача через пропсы Иногда имхо можно делать компаунды, но тогда нужно упарываться в нормальное документирование анатомии. Но компаунды сложнее рефакторить, потому что эта самая анатомия может быть размазана по всему модулю-консьюмеру, и чтобы понять как и что там юзается, надо будет изучать как именно этот консьюмер работает

Sergey Grishchenko
Неявность тоже порождает, если сделать неправильно...

Условно export const MyFeatureEntrypoint = ({ model, ...ui props }) => ( <MyFeatureModelContext.Provider value={model}> <MyFeatureComponent1 /> <MyFeatureComponent2 /> </ MyFeatureModelContext.Provider> ) const MyFeatureComponent1 = () => { const model = useContext(MyFeatureModelContext) ........do something with the model.......... }

Sergey Grishchenko
Условно export const MyFeatureEntrypoint = ({ mod...

Но мы проп-дриллим модель обычно, не юзаем контексты

Sergey Grishchenko
Но мы проп-дриллим модель обычно, не юзаем контекс...

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

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

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

а через 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
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
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
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта