Пиши КОМПОНЕНТИ як SENIOR | React Compound Component Pattern

Ғылым және технология

#frontend #development #react
Привіт, я Нік і ти на каналі Dev Routine!
Посилання на проект з відео: github.com/SemX74/compound-co...
Стеж за нами в телеграмі: (Корисні пости і меми): t.me/+giZ-rijhq7BiZGEy
Дивись наш тікток: / dev.routine
Лайк та коментар, якщо відео було тобі корисно!
Таймкоди:
0:00 - Інтро
0:20 - Вступ
1:07 - Пояснення проблеми
2:02 - Рефакторимо компонент
9:00 - Заключення

Пікірлер: 138

  • @user-xd3we2qp4i
    @user-xd3we2qp4i25 күн бұрын

    Дякую за tutorial, лишень не встигав зрозуміти, треба ще раз подивитись для усвідомлення.

  • @vladyslavbrataniuk1324

    @vladyslavbrataniuk1324

    24 күн бұрын

    правда, зазвичай приходиться дивитись подібні відео на 1.25-1.5, а тут навпаки - 0.75)))

  • @amelianceskymusic
    @amelianceskymusic26 күн бұрын

    Хтось полайкав, хтось покритикує🤭: 1. За вставки 25 кадр вже писали 2. Деколи буває закінчення слів проковтуюиься, доводиться витрачати додаткові зусилля на вслуховування, щоб точно усі слова розібрати. Можливо локальна особливість мови 3. Клавіатура звучить ближче і тарабанить високими частотами по вухах 4. Рот від мікрофону дуже далеко, через це мікрофон захоплює кімнату (в т.ч. клаву), що звучить не дуже приємно, до того ж голос втрачає в розбірлмвості і тембрі

  • @itsDevRoutine

    @itsDevRoutine

    26 күн бұрын

    Мікрофон новий купили, вставки пофіксимо, дякую за комент!🙌

  • @dennyfedyna9707
    @dennyfedyna970718 күн бұрын

    Будуть ще розгляди патернів?)

  • @ggo_webdev
    @ggo_webdev24 күн бұрын

    Дуже гарно розповідаєте, маєте до цього неабиякий хист, мені дуже подобається, лайк, підписка і респект) продовжуйте ділитися чимось цікавим)

  • @inkliuznyk
    @inkliuznyk25 күн бұрын

    Ого, оце якість і багато нового дізнався і подача хороша. Підписка, лайк.

  • @CryptoBro7
    @CryptoBro7Ай бұрын

    Нік із каналу Dev Routine мій улюблений it блогер!

  • @itsDevRoutine

    @itsDevRoutine

    Ай бұрын

    😂❤️

  • @ops_rv
    @ops_rv27 күн бұрын

    Дякую за контент, використовуємо такий стиль написання компонентів в Ui бібліотеці, зручно.

  • @vladprodan7010
    @vladprodan7010Ай бұрын

    Дуже круто, продовжуй!

  • @itsDevRoutine

    @itsDevRoutine

    Ай бұрын

    дякую🙌

  • @BazliMax
    @BazliMax24 күн бұрын

    Дякую за цікавий контент

  • @renkodima
    @renkodima29 күн бұрын

    Дякую за годний український контент!

  • @YuraKarpovich

    @YuraKarpovich

    24 күн бұрын

    "не лишє", а зайве

  • @RR-rw5bc
    @RR-rw5bc29 күн бұрын

    Відверто - норм-лайк!) Така невеличка стаття на пару хв, що продемонстрована автором у відео дуже якісно!) Для себе знайшов ComponentPropsWithoutRef. Постійно махався з TS і получалось недуже 🥲А хотілось зробити саме так. Дякую!)

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    Дякую!

  • @AndrewFloatrx
    @AndrewFloatrx29 күн бұрын

    багато зауважень... подивись як проектують компоненти у топових UI лібах і пробуй робити так само... видно, що трохи шариш, але писати в заголовку клікбейт ал-ля "пиши як сіньйор" то можна і на критику відповідну нарватися )) ну не дотягує тут на сіньйора... це банальний до болі простий приклад... на сіньйора треба брати якусь складнішу тасочку... Popover візуально по UI виглядає не так... це більше смахує на Dropdown... + console.log('hello') замість того, щоб описати нормальну подію і прокинути наверх - це точно по-сіньйорськи ))) ps; продовжуй у тому ж дусі і колись будеш писати як сіньйор )) 😜

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    Дякую за коментар! Насправді сам розумію що не дотягнув в багатьох моментах + можна було б ускладнити, бо аж надто мало логіки. Клікбейтити погано але в кінці кінців можливо через таку назву люди у яких є більший досвід можуть дати якісь поради ну і піддати відео критиці (я це сильно ціную) P.S. Роботу над помилками зробимо, буду старатись краще)

  • @Clo2n

    @Clo2n

    24 күн бұрын

    > топових UI лібах скинь, будь ласка, посилання на компонент з топових ліб, який на твою думку гарно написаний

  • @hasst9261
    @hasst926110 күн бұрын

    Раджу контент фуйлу readme в репо замінити на щось більш актуальне до теми

  • @user-yk6iq5hn4d
    @user-yk6iq5hn4d29 күн бұрын

    Відео трапилось у рекомендаціях, побачив про ІТ українською, дивлюсь із задоволенням. Канал невеличкий, але думаю, що своя аудиторія прийде. Автору сил і вдачі!

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    дякую ❤

  • @VasFree
    @VasFreeАй бұрын

    Вже злякався, що сотий раз доведеться передивлятись "php за 5 хвилин" за сніданком, але мій сніданок був врятований Ніком. За відос подякував! І, що не менш важливо, поснідав!

  • @itsDevRoutine

    @itsDevRoutine

    Ай бұрын

    все для вас😂❤️

  • @user-yk6iq5hn4d
    @user-yk6iq5hn4d29 күн бұрын

    Та є декілька порад: 1) замість ...rest краще писати ...props 2) замість бібліотеки classnames використовуй clsx, це теж саме, але менше важить, тож краще 3) не обов'язково обертати компонент в тег div. Можна використовувати і не смітити тегами. Це теж хороший підхід. В даному випадку з тег div взагалі не потрібний

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    Дякую! Взагалі все знав але дякую за поправки, спішив) А на рахунок classNames я вже й сам його не використовую, а роблю поєднання clsx & twmerge, тоді люта імба получається

  • @user-yk6iq5hn4d

    @user-yk6iq5hn4d

    29 күн бұрын

    @@itsDevRoutine Крутяк. Підхід вогонь, я теж так роблю з невеликими змінами. Спробуй колись підхід з папкою src/shared/conponents/SomeComponent де лежать компоненти, які будуть використовуватися як конструктор. Це в цілому теж саме, але без assign'ів, поки не можу сказати як краще. Твій варіант вогонь, але треба пробувати на практиці, коли потрібна буде більша гнучкість

  • @webUtopiaUa
    @webUtopiaUa29 күн бұрын

    Ще в ідеалі зробити 2 контексти для того щоб зайвий раз не відбувався рендер і обєднати їх, один для хендлерів другий для змінних які(ий) хендлер трігерить і відповідно імпортувати різні в потрібні місця. В цілому такий підхід як на відео актуальний для написання кастомної бібліотеки з великою кількістю компонентів та їх варіацій, в іншому MUI або аналогів з базовою кастомізацією достатньо з головою...

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    Хороша ідея! Подивимось що принесе реакт 19, можливо не потрібно буде паритись за подвійний контекст ітд. В кінці кінців це стосується не тільки поповерів ітд а загалом одним із способів структурування компонентів які якимось чином повʼязані між собою😄

  • @aonteb9celuet262
    @aonteb9celuet26227 күн бұрын

    Для Тейлвінду краще використовувати не classNames або clsx, а tailwind-merge. Він краще працює з об'єднанням классів саме тейлвінда (при опціональних класах ці ліби можуть некоректно заміщати класи). До того ж, tailwind-merge пропонує багато інструментів для работи з конфігом тв.

  • @barneystinson2041

    @barneystinson2041

    24 күн бұрын

    а ще краще clsx+tw-merge = cn()

  • @spacepirate3279
    @spacepirate327929 күн бұрын

    Раз на рік і рекомендації ютюб нормальний контент підкидають! Просто супер жирний плюс за якісний український контент! Лайк і підписка!

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    дякую!❤

  • @dmons24
    @dmons2429 күн бұрын

    В місцях з вставками коду як на 1:05 нічого не можна розгледіти. Роби їх трохи довше на єкрані?

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    Будемо працювати над цим

  • @AntonYefremov
    @AntonYefremov25 күн бұрын

    По ідеї, на заміну classnames вже є легша drop-in альтернатива clsx

  • @itsDevRoutine

    @itsDevRoutine

    25 күн бұрын

    є) просто проект досить старий і вже юзав те що є, в новому відео буде нова ліба

  • @user-tn3uo6tr3t
    @user-tn3uo6tr3t25 күн бұрын

    От чортяка, а це вражає Однозначно лайк

  • @hasst9261
    @hasst926128 күн бұрын

    Дякую, що є посилання на репо

  • @artemkatr9483
    @artemkatr9483Ай бұрын

    давай відос про архітектуру проектів на реакт

  • @user-lb6lq5yh5q
    @user-lb6lq5yh5qАй бұрын

    Слушай, а пиздатый подход 😮

  • @user-ji8me7hz1s
    @user-ji8me7hz1s29 күн бұрын

    Привіт, дякую за таке інформативне відео. Поділися будь ласка, чи плануєш випускати відео по Next.js?

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    Так, але сам планую краще розібратись в ньому, тільки відносно недавно почав працювати на app роутері

  • @bozhokvictor7740
    @bozhokvictor774021 күн бұрын

    Ти крутий! Дякую за якісний контент українською!

  • @pahan35skype
    @pahan35skype26 күн бұрын

    Класний контент, чуваче! Продовжуй знімати корисні штучки.

  • @itsDevRoutine

    @itsDevRoutine

    26 күн бұрын

    дякую!

  • @black_light
    @black_light27 күн бұрын

    Супер. Я наче намагаюся якось чистенько робити, але згодом спостерігаю смітник в компонентах.

  • @itsDevRoutine

    @itsDevRoutine

    27 күн бұрын

    з часом все буде вийде!)

  • @rosaka14
    @rosaka14Ай бұрын

    харош

  • @itsDevRoutine

    @itsDevRoutine

    Ай бұрын

    😎

  • @sanfrancisco8426
    @sanfrancisco8426Ай бұрын

    Щей українською, топ! Підписочка)

  • @devjourney8583
    @devjourney858329 күн бұрын

    дякую за корисне відео!

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    Дякую за коментар! Слідкуй за новими відео🤠

  • @_g4rv
    @_g4rv29 күн бұрын

    Друже, чудове відео! Придумай, буль ласка, щось зі звуком, щоб звуки клавіатури так по вухах не били... дякую!

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    В процесі покупки мікрофона, вибач що приходиться таке слухати(

  • @user-lq2us4rc9t
    @user-lq2us4rc9t29 күн бұрын

    Дякую, лайк підписка. Але було б цікаво подивитись якісь уроки, як більш детально то робити, які проблеми вирішує і тд)

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    Вже на етапі монтажу зрозумів це Вчимось на помилках, в наступних відео буде більше лірики на рахунок цього)

  • @romanroki7528
    @romanroki752829 күн бұрын

    Дуже круте відео, продовжуй в тому дусі.А з redux toolkit цей підхід так само працює?

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    Дякую! Питання трішки не зрозумів, можеш пояснити?

  • @romanroki7528

    @romanroki7528

    29 күн бұрын

    @@itsDevRoutine ну я маю на увазі якщо замінити context на redux toolkit буде так само працювати?

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    @@romanroki7528 redux це глобальний store, він не підійде для цієї штуки та й немає сенсу його так використовувати

  • @user-pl5we9ub8r
    @user-pl5we9ub8r27 күн бұрын

    Не багато українського контенту в сфері фронтенду. дякую)

  • @itsDevRoutine

    @itsDevRoutine

    27 күн бұрын

    🙌

  • @YuriiKratser
    @YuriiKratser25 күн бұрын

    Молодець!

  • @nemec980
    @nemec98027 күн бұрын

    Не багато українського контенту в сфері фронтенду Дякую за твою працю! Лайк авансом :)

  • @nemec980

    @nemec980

    27 күн бұрын

    А яка в тебе тема у vs-code?)

  • @itsDevRoutine

    @itsDevRoutine

    27 күн бұрын

    @@nemec980 Дякую за підтримку! Це CodeSandbox Black у виконанні Ziady Mubaraq. Використовую вже років так 2)

  • @rhost-9968
    @rhost-996829 күн бұрын

    const Popover = Object.assign(PopoverComponent, { Button: PopoverButton }) === PopoverComponent.Button = PopoverButton

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    В деяких сетапах може бути помилка в ts в такому випадку

  • @CodeBeep
    @CodeBeepАй бұрын

    Лайк, підписка)

  • @leroviten
    @leroviten28 күн бұрын

    Гідний і сучасний контент! Дякую. Прям нагадало примітиви Radix. 🤙

  • @itsDevRoutine

    @itsDevRoutine

    28 күн бұрын

    дякую!

  • @OstapBrehin
    @OstapBrehin24 күн бұрын

    Класна якість, знімаєте на камеру телефону?

  • @itsDevRoutine

    @itsDevRoutine

    24 күн бұрын

    Є фотоапарат)

  • @OstapBrehin

    @OstapBrehin

    24 күн бұрын

    @@itsDevRoutine який?)

  • @itsDevRoutine

    @itsDevRoutine

    24 күн бұрын

    @@OstapBrehin це якийсь старенький Canon EOS 60D, взагалі не для відео але я якось рятую ситуацію 😂

  • @antonpodkur3520
    @antonpodkur352029 күн бұрын

    топ контент

  • @maxymbrychka
    @maxymbrychka28 күн бұрын

    nice

  • @ruslankovalenko5086
    @ruslankovalenko508629 күн бұрын

    Дуже якісно

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    дякую

  • @thecoolestpro1307
    @thecoolestpro130728 күн бұрын

    Чому не юзаєш диструктуризацію?

  • @itsDevRoutine

    @itsDevRoutine

    28 күн бұрын

    Де саме

  • @cyxapik61
    @cyxapik6126 күн бұрын

    Нету в бэте 19 версии реакт помпилятора, и добавят его не известно когда

  • @itsDevRoutine

    @itsDevRoutine

    26 күн бұрын

    буде)

  • @m4es7r0
    @m4es7r028 күн бұрын

    о ура про react укр

  • @itsDevRoutine

    @itsDevRoutine

    28 күн бұрын

    🥳

  • @yourr_dude
    @yourr_dude29 күн бұрын

    О файно

  • @alexp3617
    @alexp361729 күн бұрын

    можна вставки коду на 0.001 сек зробити? бо дуже встигаю все роздивитись

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    можна😁 А взагалі ті вставки не несли ніякого важливого сенсу, і вже потім зрозумів, що дійсно розгледіти їх дуже важко (якщо відео тільки на паузу не поставити) Будемо виправляти😜

  • @alexp3617

    @alexp3617

    27 күн бұрын

    @@itsDevRoutine все ок дякую відео класне ) вставки теж топ даже стопнуть не встиг :)

  • @thechrom007
    @thechrom00729 күн бұрын

    А нащо Object.assign? Чому не просто export default { ... , .... , ... } ?

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    Можна, але таким чином ми обмежуємось тільки одним імпортом, та групуємо ці компоненти. В нас виходить єдиний неймспейс: Popover.Button Popover.List

  • @GazdaZuBB

    @GazdaZuBB

    27 күн бұрын

    @@itsDevRoutine А хтось заюзав тільки 2 із 3х твоїх компонент, а із-за 1 штучно створеного неймспейсу в тебе трішейкінг якраз його і не викине

  • @GazdaZuBB

    @GazdaZuBB

    27 күн бұрын

    @@itsDevRoutine економити на імпортах така собі ідея. потім бандлер все як треба змерджить і буде економія.

  • @itsDevRoutine

    @itsDevRoutine

    27 күн бұрын

    @@GazdaZuBB Ну по-перше я не думаю що хтось буде використовувати подібний компонент без кнопки, ліста або або кнопки всередині поповера (або меню), бо один без одного вони не можуть функціонувати. Також такий паттерн юзають в дуже популярних лібах і туди пхають далеко не такі простенькі компоненти, у яких різниця бандлу буде (якщо вже таки щось пішло не так) мізерна. І на кінець я просто показав який є варіант робити компоненти :) А стосовно імпортів, то все-таки якщо є можливість імпортити один якщо вони всеодно всі використовуються, то чому б нею не скористатись?

  • @user-pd1sx5sf7s
    @user-pd1sx5sf7s26 күн бұрын

    + 1 в полк shadcn

  • @xczm225
    @xczm22529 күн бұрын

    підписався!

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    дякую!

  • @boriskleshch8416
    @boriskleshch841627 күн бұрын

    Вроде как React-bootstrap так и делает напримере его компонента аккордиона..

  • @itsDevRoutine

    @itsDevRoutine

    27 күн бұрын

    Так роблять багато ліб, наприклад react/headlessui

  • @vladyslavnahornyi7663
    @vladyslavnahornyi766325 күн бұрын

    Такий крутий SENIOR що на превʼю фото не передав key проп компоненту

  • @itsDevRoutine

    @itsDevRoutine

    25 күн бұрын

    Я не претендую на "крутого senior-а", хто тобі таке сказав?) btw превʼю в прод не піде, обіцяю😉

  • @zakirovdamir
    @zakirovdamir28 күн бұрын

    что это за язык? Яндекс.Браузер не справляется с переводом

  • @itsDevRoutine

    @itsDevRoutine

    28 күн бұрын

    джаваскріпт друже

  • @resoursa
    @resoursa29 күн бұрын

    🥰🥰🥰🥰🥰

  • @alexkonoplian
    @alexkonoplian28 күн бұрын

    Хм, і нашо я подивився, якщо я не пишу на реакті)

  • @itsDevRoutine

    @itsDevRoutine

    28 күн бұрын

    Це поки що😁

  • @andrii_suprunenko
    @andrii_suprunenko29 күн бұрын

    icon в arc то за одного запрошеного?

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    так)

  • @denisoleksyuk5346
    @denisoleksyuk534627 күн бұрын

    крутий патерн

  • @itsDevRoutine

    @itsDevRoutine

    27 күн бұрын

    Згоден

  • @ukrainianigor
    @ukrainianigor29 күн бұрын

    Брат умоляю що за шрифт в ВС КОД хочаЮЗАЮ ВЕБШТОРМ АЛЕ СКАЖИ ШРИФТ АПУПЕНИЙ ПЖ БРО

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    "Fira Code"

  • @dmytro-skh
    @dmytro-skh26 күн бұрын

    скріні з кодом занодто коротко по часу показуються

  • @itsDevRoutine

    @itsDevRoutine

    26 күн бұрын

    Так, більше такого не буде Хоча там всеодно не було нічого важливого

  • @DomiNoR777
    @DomiNoR77729 күн бұрын

    сложно😬

  • @victormyha882
    @victormyha88218 күн бұрын

    Оуу шиит, крутезний відос. Не знав про такий спосіб написання ui, виглядає бомбезно, буду юзати Дякую!

  • @zikkrype
    @zikkrype27 күн бұрын

    Не фанат реакту. Я бекенд. Інколи щось малюю на ангулярі. Але так хотілося би, щоб такі відосики були по ангулярі

  • @itsDevRoutine

    @itsDevRoutine

    27 күн бұрын

    не фанат ангуляра(

  • @user-dz8jl7xg5x
    @user-dz8jl7xg5x24 күн бұрын

    Tutorial how to how to

  • @mSemwolf
    @mSemwolf26 күн бұрын

    чудовий патерн. вже знаю де використати

  • @user-yq3pc8th1c
    @user-yq3pc8th1c17 күн бұрын

    Я хочу від тебе дітей

  • @itsDevRoutine

    @itsDevRoutine

    17 күн бұрын

    😆

  • @not8in494
    @not8in49425 күн бұрын

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

  • @itsDevRoutine

    @itsDevRoutine

    25 күн бұрын

    😁👌

  • @svay6849
    @svay684926 күн бұрын

    Як сеньйор? Ти про що? Зараз ти пишеш як випускник goit. Не треба вчити людей такому.

  • @itsDevRoutine

    @itsDevRoutine

    26 күн бұрын

    Навчи ти краще

  • @ukrainianigor
    @ukrainianigor29 күн бұрын

    Хз брат побачив превю. видос потом посмотрю но Вижу короче ПРЕВЬЮ. X.firstname X.lastname превью очень п№;датое реально топ выглядит как то завлекло красавчик/ Реально как то превью завлекло Будто буквой Х Короче подписался поставил лайк (посмтрю позже) Я сам со Львова незнаю почему по руски пишу а ти красавчик брат ПРЕВЮ респект

  • @itsDevRoutine

    @itsDevRoutine

    29 күн бұрын

    😂❤

  • @TimaGixe
    @TimaGixe27 күн бұрын

    Цікаво, підписка.

  • @ops_rv
    @ops_rv27 күн бұрын

    Дякую за контент, використовуємо такий стиль написання компонентів в Ui бібліотеці, зручно.

  • @snieda_programming
    @snieda_programming27 күн бұрын

    топ контент

  • @itsDevRoutine

    @itsDevRoutine

    27 күн бұрын

    дякую

Келесі