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

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

24 ответов

6 просмотров

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

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

Максим- Автор вопроса
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
Но мы проп-дриллим модель обычно, не юзаем контекс...

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

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

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

Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Добрый день! Подскажите, пожалуйста: какими компетенциями нужно обладать, чтобы претендовать на работу эрланг (отдельная благодарность, если про элексир тоже подскажете) разр...
via ☸️ led
20
Всем привет. Ребят подскажите пожалуйста. Вопрос по дизасемблировани. Начну с начала. У меня есть скомпилированная программа на ГО (я разработчик) - в ней есть защита лицензии...
Zloy
11
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Можно попросить небольшое ревью кода? Тут немнога, я ничего интереснее не придумал, чем написать аналог tree в качестве практики с cmake. https://github.com/hrimov/tree-unix/...
Andrew Hrimov
11
Карта сайта