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

Привет. А куда и в каком виде вы обычно выносите

хэндлеры событий компонента?

64 ответов

5 просмотров

А зачем их куда-то из компонента выносить?

Oleg- Автор вопроса
Volodymyr Klimov
А зачем их куда-то из компонента выносить?

чтобы компоненты были тонкие. не люблю когда компонент больше 40-50 строк

Oleg
чтобы компоненты были тонкие. не люблю когда компо...

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

Oleg- Автор вопроса
Volodymyr Klimov
Это лишнее. Вы размазываете то, что относится к од...

я бы хотел всё вынести в хуки но пока не пойму как потому что по факту это просто метод. надо подумать как сделать удобно и чтобы код был читаемым. насчет размызывания не увеерен потому что у IDE есть быстрый способ перейти к методу

Oleg
я бы хотел всё вынести в хуки но пока не пойму как...

В хуки можно вынести. Просто из хука возвращайте хендлеры и нужные для компонента пропсы

Oleg
чтобы компоненты были тонкие. не люблю когда компо...

сами импорты могут занимать 40-50 строк🌚

Oleg- Автор вопроса
Maxim Koylo
сами импорты могут занимать 40-50 строк🌚

Ну так импорты в одном файле, jsx- в другом, хуки - отдельно, css - отдельно🤣

Oleg
и получим ангуляр)

У ангуляра просто шаблоны отдельно. У реакта шаблонов нет. Стили, разметка и логика - это все части компонента. Нет ничего плохого чтобы держать это в одном файле. Проблема ж не в размере файла, а в том, как это написано и спроектировано.

Oleg- Автор вопроса
Volodymyr Klimov
У ангуляра просто шаблоны отдельно. У реакта шабло...

ну вот спроектировано плохо, если файл большой получился . но пока думать об архитектуре нет времени. это слишком сложно

Oleg
ну вот спроектировано плохо, если файл большой пол...

Короче, "не люблю компоненты больше 40 строк" - это просто личный "фетишь", который никакого качества не гарантирует и ничего о вашем коде не говорит)

Oleg- Автор вопроса
Maxim Koylo
у тебя был продакшен опыт?

сейчас начался интересный опыт. и поэтому возникают такие вопросы

Oleg
сейчас начался интересный опыт. и поэтому возникаю...

интересный опыт в плане что на проекте все файлы не больше 50 строк?

Oleg- Автор вопроса
Volodymyr Klimov
Короче, "не люблю компоненты больше 40 строк" - э...

это понятно. но это может косвенно сказать о том что проект неплохо спроектирован и вся логика не хранится в UI

Oleg
ну вот спроектировано плохо, если файл большой пол...

Нет времени точить пилу — надо лес валить

Oleg
это понятно. но это может косвенно сказать о том ч...

Нет, не может. "логика хранится в UI" В ui логики столько может быть, что вам и не снилось. И дробить это на миллион файлов - фиговая идея.

Oleg
ну вот спроектировано плохо, если файл большой пол...

Мерять качество количеством строк — заведомо провальная идея. Нет прямой корреляции, только косвенная. И зависит от кучи других параметров. Вынести обработчики событий из компонента — хуже подход сложно придумать

Volodymyr Klimov
Короче, "не люблю компоненты больше 40 строк" - э...

мне на работе на ангуляре достались компоненты почти под 1000 строк))

Ilnur Ryazhapov
мне на работе на ангуляре достались компоненты поч...

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

Oleg- Автор вопроса
Ivan 🧑‍🚀
Мерять качество количеством строк — заведомо прова...

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

Oleg
идеальный компонент это где есть jsx без прокидыва...

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

Oleg
идеальный компонент это где есть jsx без прокидыва...

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

Oleg
идеальный компонент это где есть jsx без прокидыва...

по архитектуре у дядюшки Боба книжка есть, почитай

Oleg- Автор вопроса
Maxim Koylo
тоесть для тебя идеально что бы все данные для ком...

данные из контекста а обработчики в хуках

Oleg
данные из контекста а обработчики в хуках

ага то есть плюс к этому еще стм свой на контекстах?

Alexey Ermakov
по архитектуре у дядюшки Боба книжка есть, почитай

Она про принципы, а не про конкретные вещи. И больше про бек

Oleg
идеальный компонент это где есть jsx без прокидыва...

Откуда такое определение "идеального компонента"?

Oleg- Автор вопроса
Volodymyr Klimov
Откуда такое определение "идеального компонента"?

ну есть опыт работы с таким кодом (написан не мною). и от чистоты компонентов получаю удовольствие)))

Volodymyr Klimov
Она про принципы, а не про конкретные вещи. И боль...

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

Alexey Ermakov
без разницы к чему эти принципы применять если у ч...

Их применение не всегда очевидно, особенно в современном фронтенде

Oleg
ну есть опыт работы с таким кодом (написан не мною...

Про "отсутствие пропсов" - вообще не согласен. Не понимаю, почему люди считают, что пропсы - это плохо

Volodymyr Klimov
Их применение не всегда очевидно, особенно в совре...

если бы это было так очевидно, не было бы архитекторов с зарплатой в полмиллиона )

Oleg- Автор вопроса
Volodymyr Klimov
Про "отсутствие пропсов" - вообще не согласен. Не...

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

Oleg
идеальный компонент это где есть jsx без прокидыва...

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

Oleg
я хз почему так считают но предполагаю из-за меньш...

Вместо явных связей вы делаете неявные, чем это лучше?

Oleg- Автор вопроса
Volodymyr Klimov
Вместо явных связей вы делаете неявные, чем это лу...

почему? есть стейт от которого зависит компонент и больше ничего

Alexandr
Мне кажется гораздо удобнее иметь композицию компо...

Особенно, если учесть, что ни реакт тулзы, ни редакс тулзы не умеют в нормальный мониторинг заюзанных селекторов (

Oleg
почему? есть стейт от которого зависит компонент и...

Стейт, от которого зависит несколько компонентов, они изменяют это состояние и полагаются на то как работает с этим состоянием другой компонент. А это уже связь, но неявная. Например, один компонент загрузил данные в хранилище, а другой ведет себя так, будто там они уже есть.

Oleg- Автор вопроса
Volodymyr Klimov
Стейт, от которого зависит несколько компонентов, ...

но ведь лучше кода у тебя один источник изменения компонента а не несколько (пропсы и общий стейт например). по крайней мере, вижу так

Volodymyr Klimov
Их применение не всегда очевидно, особенно в совре...

вот как раз в современном фронтенде уже почти без разницы - бэк у тебя, мобилка, pwa или еще что. приложение - оно и есть приложение, абстракции работают одинаково практически. clean там, ddd, hexagonal или что угодно еще взять

Oleg
но ведь лучше кода у тебя один источник изменения ...

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

Vitaliy Ponomarev
вот как раз в современном фронтенде уже почти без ...

Покажите мне "hexagonal" на фронте от которого не больно

Oleg
но ведь лучше кода у тебя один источник изменения ...

Пропсы - хороший явный контракт, который компонентом декларируется.

Oleg
я хз почему так считают но предполагаю из-за меньш...

Взамен на большую связность всего приложения 👍🏿

Volodymyr Klimov
Покажите мне "hexagonal" на фронте от которого не ...

я не говорил что не больно. больно, но иногда приходится. но это проще, чем внутренностями того же firebase обмазывать всё, а потом долго переезжать на что-то другое. но да, мне мобилки ближе сейчас, чем web, там это заметнее.

Volodymyr Klimov
Пропсы - хороший явный контракт, который компонент...

А если прокидывать в компонент селектор, с объявлением интерфейса, который должен реализовывать результат этого селектора?)

Alexandr
А если прокидывать в компонент селектор, с объявле...

Я вчера слышал, что в реакте на rescript так и работает все. Там нет контекста как раз потому, что "явное лучше неявного".

Vitaliy Ponomarev
я не говорил что не больно. больно, но иногда при...

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

Volodymyr Klimov
Пропсы - хороший явный контракт, который компонент...

контракты как идея в js так себе кто угодно откуда угодно этим контрактам третью руку к жопе приделает и норм

Alexey Ermakov
контракты как идея в js так себе кто угодно откуда...

Контракты в js - единственный способ писать надежно) Просто за их нарушение надо больно бить))

Oleg- Автор вопроса
Volodymyr Klimov
Контракты в js - единственный способ писать надежн...

это типа перед и после действия можно сайд эффекты делать ?

Oleg- Автор вопроса
Volodymyr Klimov
Контракты в js - единственный способ писать надежн...

контракты это везде хорошо, просто где-то их нарушить нельзя, а где-то хер найдешь, где их кто нарушил)

Volodymyr Klimov
Ну, тут подход не виноват)

скажем, он "не работает" с этим замечательным языком)

Volodymyr Klimov
Я вчера слышал, что в реакте на rescript так и раб...

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

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
lazarus-3.2.0/gtk, linux патч "имя проекта по умолчанию project1 -> prj" день добрый не нравится "именя проекта по умолчанию" (project1), к.раз приходится переименовывать (н...
livontiy
5
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Can I forward ports (including the SSH port) between two machines without SSH? I know I can forward SSH server port from machine A (which blocks all requests by firewall) to ...
required optional
5
Всем вечера. Подскажите как лучше сделать. делаю на Д10 Например будет база данных на SQLite. в ней будет много таблиц. более 50шт Типа справочник. Содержать ID Name Id p...
Андрей Т 🐎
10
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
Я короче решил скомпилировать Nim в js, я думал он сработает как обычный транслятор. По итогу он мне создал файл с расширением js, и туда поместил кучу кода Вопрос, что это з...
𝕾𝖍𝖆𝖉𝖊 <suspense>
9
Карта сайта