Тёмный
No video :(

Create components in this way in React (Composition Pattern) 

Rocketseat
Подписаться 367 тыс.
Просмотров 105 тыс.
50% 1

Within our application, no matter how simple it may be, components can have an absurd number of customizations (which I'll show you in the video). 😂
Whether it's for one or more customizations, the easiest way is to use a composition pattern. I've been using it a lot in my front-end projects with React.
Today, you'll see in practice how to apply this pattern to a notifications widget, following its specific customizations.
Follow Rocketseat on social media:
Twitter: @rocketseat
Facebook: @rocketseat
Instagram: @rocketseat

Опубликовано:

 

29 июн 2023

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 222   
@kenjiutaka
@kenjiutaka Год назад
Não conhecia esse ElementType, ele parece ser mto útil. Uma dica, quando estender as props de um componente, tem um type helper do React chamado ComponentProps. Dá pra extender tantos elementos HTML quanto componentes customizados. Ficaria assim: interface NotificationActionProps extends ComponentProps {} E para custom components: interface SomeComponentProps extends ComponentProps
@Felipe-jf5dx
@Felipe-jf5dx Год назад
Top dms, não sabia dessa
@skynight0147852369
@skynight0147852369 Год назад
Dica ótima mano!
@yarapolana
@yarapolana 11 месяцев назад
Boa partilha!!🎉 Sempre fiquei curiosa na differença de HTML… com ComponentProps. Muito bem explicado.
@luisvalgoi6085
@luisvalgoi6085 9 месяцев назад
eu uso o JSX.IntrinsicElements["button"] 😆
@migliorelli
@migliorelli 8 месяцев назад
passei a vida toda usando "interface CustomElementProps extends React.OriginalElementHTMLAttributes {...}"
@lukaslima5873
@lukaslima5873 9 месяцев назад
mt massa que qnd vejo as aula dele parece tudo mt facil, ai qnd coloco em pratica passo hrs quebrando a cabeca kkkkkkkkkkkkkkkkkkkkkkk faz parte do processo!
@TheKlein550
@TheKlein550 3 месяца назад
To me sentindo assim neste exato momento uhjaeuhaeuhae muitas dúvidas.
@pamelaotero9930
@pamelaotero9930 13 часов назад
@@TheKlein550 Você ja tem uma base no react, front end etc?
@pamelaotero9930
@pamelaotero9930 13 часов назад
às vezes é falta de uma base no desenvolvimento front end, mas pode vir a melhorar com o tempo
@TheKlein550
@TheKlein550 12 часов назад
@@pamelaotero9930 eu estava aprendendo na epoca, hoje ja to na area kkkk
@martygo
@martygo Год назад
Ja havia visto essa abordagem em uma biblioteca, nunca fui afundo. Muito interessante. Obrigado por compartilhar Rockeseat 🎉.
@Luizimbatera
@Luizimbatera Год назад
As bibliotecas UI acabam até mesclando essa abordagem com outras patterns, como por exemplo component composition q é passar um componente como props para outro componente
@BruunoFernandzOFC
@BruunoFernandzOFC Месяц назад
Pra quem tiver interesse em se aprofundar mais, existe um padrão de design no front-end que se chama Atomic Design, é a mesma teoria (em quebrar o componente em componentes menores) mas utilizando padrões de arquitetura mais recomendados no designer atomico (atomos, moleculas, templates, etc...). É mais recomendado quando se tem um design system pronto para o projeto, fica muito mais detalhado na hora de documentar em um storybook por exemplo.
@eualexslim
@eualexslim Год назад
Esse pattern é lindo demais. O radix e muitas outras libs usam demais! Outro ponto, a utilização desse pattern, de certa forma, não deixa de utilizar o Single Responsability pattern do SOLID, olha só que massa.
@omundoavolta
@omundoavolta Год назад
Trás mais disso que o pessoal aqui de produto ama ❤
@leandro40141
@leandro40141 Год назад
Como eu estava esperando por um esse conteúdo diegão, top demais
@machadohnr
@machadohnr Год назад
Conteúdo muuuito bom, Diegão!! Não conhecia esse pattern de composição mas já vou levar pro time que trabalho para aplicarmos isso nos nossos projetos.
@joao-ys4go
@joao-ys4go Год назад
Muito obrigado por trazer conteúdos de extrema qualidade como este. Tem me ajudado muito nos estudos
@FabricioAlexanderDC
@FabricioAlexanderDC Год назад
incrivel!! eu tinha feito ontem sobre esse projeto so em tailwing e logo hoje ja sair esse video so me da mais motivo para estudo sobre o assunto, valeeeu Rocketseat!
@pablod3v
@pablod3v Год назад
Show diegao, conteúdo top, o pattern de composição nos ajuda bastante tanto na manutenção quanto a escabilidade dos componentes.
@williamroger9375
@williamroger9375 Год назад
Mano que conteúdo sensacional, adorei essas dicas vou pesquisar um pouco mais sobre esse Pattern.
@samueloliveira4465
@samueloliveira4465 Год назад
Cara, muito interessante, com toda certeza vou fazer algum projeto e implementar esse Pattern. Diego, você é uma inspiração para eu continuar evoluindo.
@leandrosoares6
@leandrosoares6 Год назад
Pattern sensacional. Muito obrigado por partilhar!
@CarlosEduardo42
@CarlosEduardo42 Год назад
Nossa. Gostei demais e já abriu horizontes para outros tipos de componentes. Inputs, formulários, tabelas... Show de bola!
@samucatnb12
@samucatnb12 6 месяцев назад
esse video ficou perfeito, com ótimo exemplo prático, parabéns.
@MatheusSouza-mj6ok
@MatheusSouza-mj6ok Год назад
Muito foda Diegão, conteúdo solícito e claro.
@matheussunderhus
@matheussunderhus Год назад
isso somado a Context API faz você entregar projetos num outro nível! Ótima aula !!!! É nessas horas que você entende o porque existem Padrões de projeto e se você acha que no front-end não da para implementar coisas do tipo você estava enganado. Muito show ver mais conteúdo com patterns no frontend 🚀
@gssj-o8p
@gssj-o8p Год назад
Muito bom, Diego é muito ligeiro e preciso isso é muito bom para quem já tem experiência em programação e não precisa ir tão devagar!
@monstru2457
@monstru2457 Год назад
Excelente conteúdo, como sempre. Já vai entrar pras minhas boas práticas.
@_Cesaum
@_Cesaum Год назад
Da até vontade de codar mais com essa didática incrível! 🚀
@Black_void375
@Black_void375 Год назад
Nossa... todo dia é dia de escola, ótimo essa dica. Vou testar em algum projeto com certeza! Thanks
@luizfelipeop
@luizfelipeop Год назад
Muito bom, tava digitando o comentário e ia falar q o radix utiliza bastante ai você começou a falar, muito massa
@me.dwesley
@me.dwesley Год назад
Muito bom, pretendo utilizar esse pattern em muitos dos meus projetos
@renanfneves
@renanfneves Год назад
Ótimo conteúdo Diego! Seria muito bom ter mais desse conteúdo sobre design patterns para projetos FE.
@guilhermerillei
@guilhermerillei 11 месяцев назад
Diego, você é o cara mais foda que eu não conheço!
@Leandro_B
@Leandro_B 11 месяцев назад
Vlw pelos dica no final, eu tava mesmo procurando algo como o Radix
@mateusdev9605
@mateusdev9605 Год назад
Diego sempre mandando muito bem, o cara é foda
@herbert_Souza
@herbert_Souza Год назад
Genial!! Que aula magnífica...
@ThugLifeModafocah
@ThugLifeModafocah 7 месяцев назад
voltando aqui pra dizer que esse video, em portugues, é muito melhor que muitos e muitos videos sobre o tema no youtube, em portugues ou ingles. Baita video foda.
@pedroneto1768
@pedroneto1768 Год назад
Boa dica! Obrigado pelo compartilhamento
@wltech3460
@wltech3460 Год назад
muito da hora diego, parabéns pelo conteúdo 👏
@verttt_
@verttt_ Год назад
Que conteúdo delicioso de ser consumido!
@JonatasBuenodoLivramento
@JonatasBuenodoLivramento Год назад
Muito bom, esse pattern salva vidas !!!
@Luccas_Alves
@Luccas_Alves Год назад
Comecei o ano apenas sabendo muita coisa sobre conceitos de programação, principalmente no que tange backend. Eu estou quase terminando meu curso de SI (é, quase nada de front é ensinado em SI, apesar de ser meu foco). E agora, depois de muito estudar a junção de Tailwind, tsx, react, Next e um tanto de mongodb, estou conseguindo ver esses vídeos sem uma dúvida sequer. Agregou mt! Vlw!
@ThugLifeModafocah
@ThugLifeModafocah Год назад
Conteudo muito foda mano. Obrigado.
@gusdev0258
@gusdev0258 Год назад
Muito top Diegão!
@maiquelleites2893
@maiquelleites2893 Год назад
muito bom....vou imlementar nos projetos agora muito massa...
@eugeniorosario4509
@eugeniorosario4509 9 месяцев назад
Muito top cara, Obrigado por compartilhar
Год назад
Muito boa explicação. Valeu!
@KevinMadalossoVeiga
@KevinMadalossoVeiga Год назад
muito bom esse pattern, excelente vídeo Diego
@diegoveigass
@diegoveigass Год назад
Toppp xará, vou aplicar nos meus projetos 👊🏼
@BrocchiRodrigo
@BrocchiRodrigo Год назад
A era disso que vc tava reclamando no Insta outro dia, que estava ficando complexo montar um botão kkk.. Mas de fato, a primeira vez talvez dê mais um pouco de trabalho, mas quando vi isso nos painéis de diálogo do headlessui, deu para notar o quanto simplifica para montar os componentes do front "depois de prontos".
@raulrozza
@raulrozza Год назад
Esse é um bom pattern, com certeza! Mas no caso de actions ali, pra respeitar o Open-Closed eu costumo receber um vetor como props e renderizar sob demanda, deixando a responsabilidade de definir a ação pro componente que chama o componente filho. Por exemplo: type Actions = Array void }>
@eduardobertozi8506
@eduardobertozi8506 11 месяцев назад
Muito bom! Isso vai ajudar muito.
@ronaldtomaz8155
@ronaldtomaz8155 Год назад
Conteúdo top demais, criando componentes dessa forma traz mais flexibilidade e facilita a manutenção. Será que vou usar isso pra tudo ? rsss
@lucasreact3113
@lucasreact3113 11 месяцев назад
Muito interessante essa forma de criar componentes!!!
@douglasvulcano4354
@douglasvulcano4354 10 месяцев назад
Cara, baita conteúdo!
@DarkMetinn2
@DarkMetinn2 Год назад
Outro ponto legal desse pattern é que podemos definir os possíveis tipos de children desses componentes e garantir que nada vai quebrar, seja em implementação ou estilo. No caso a sempre aceitaria um ou mais componentes do tipo Notification.Action.
@doug8590
@doug8590 Год назад
Hum interessante, entaoo tipo children inves de ser reactnode seria um array de notification.action nem ?
@pierreMoota
@pierreMoota 11 месяцев назад
Teria um exemplo disso?
@__maiquinho
@__maiquinho Год назад
Sensacional Diego! 🚀
@danielalmeida9609
@danielalmeida9609 Год назад
Você é foda Diego 💜
@victorbadaro
@victorbadaro 7 месяцев назад
que vídeo satisfatório! 😌
@PauloSilva-el5eq
@PauloSilva-el5eq Год назад
Sensacional Diego 🚀
@marcelocerdelo
@marcelocerdelo Год назад
Muito bom. Valeu!!!
@lucasmatos8239
@lucasmatos8239 Год назад
Explica um pouquinho sobre esse ...rest em algum vídeo! Obrigado pela ótima aula!
@rockNbrain
@rockNbrain Год назад
show de bola Diegão .. vídeo top ... fora que esse partern está mto presente agt na forma de compor as UIs no next13 com a app router, considerando ter aquela diretiva 'use client' a se considerar e tals ... vlwwwww
@WNFelix
@WNFelix Год назад
Legal pra caramba, eu ainda não tinha visto esse tipo de abordagem em componetização, vou começar a utilizar, estava fazendo tudo via props😂
@vitvitvitvitvitvitvitvit
@vitvitvitvitvitvitvitvit Год назад
sofrimento ne
@caiov.rodrigues1788
@caiov.rodrigues1788 6 месяцев назад
Grato!
@reacaosistemas5746
@reacaosistemas5746 Год назад
Top o conteúdo Diegão. Gostaria de conteúdo sobre chamadas de vídeo e áudio com react native.
@walterivulo8879
@walterivulo8879 Год назад
Muito interessante 🙏🏾
@luancordeiro2914
@luancordeiro2914 11 месяцев назад
muito bom, vou testar.
@meguinha8103
@meguinha8103 5 месяцев назад
mt legal esse componente elementtype
@paulinha-19
@paulinha-19 11 месяцев назад
surreal de bom. esse pattern facilita muito como eu não sabia disso?
@Guilherme-yd8zd
@Guilherme-yd8zd 10 месяцев назад
Muito interessante!
@tonashiro
@tonashiro Год назад
Muito boa essa pattern. Estou criando uma biblioteca de componentes no projeto que trabalho atualmente, porém, não estamos utilizando tailwind e sim styled-components. Nesse caso, como cada composição vai precisar da sua estilização, basta criar uma pasta para cada um onde vamos ter pra cada pasta(composição ) os arquivos .types, .styles e o index? Obrigado pela aula, Diego!!
@DenisioRodrigues
@DenisioRodrigues Год назад
Muito bom!
@sinhuu.s2
@sinhuu.s2 Год назад
Gosto muito de usar o design atoms por conta disso também Diegao
@gabrielsena2558
@gabrielsena2558 Год назад
Melhor thumbnail da Rocket
@CarlosEduardo42
@CarlosEduardo42 Год назад
Acho uma boa a Rocketseat trazer mais conteúdos relacionados ao NextJS. Por exemplo, depois dos Server Components, há uma nova forma de trabalhar com contextos? E qual a melhor forma de proteger rotas de uma aplicação? Seria utilizando o middleware ou tem algo melhor?
@wandersonalwes2428
@wandersonalwes2428 Год назад
Incrível 🎉🎉🎉
@caironm6737
@caironm6737 Год назад
Melhor vídeo
@Rolgab
@Rolgab Год назад
Teu teclado tão barulhento que me desconcentrou 😂 Edit: terminei o vídeo agr. 😅 muito poderoso esse pattern. Já tinha visto e usado antes mas tu executou muito bem no vídeo, muito legal ver o resultado!
@junqueiratec
@junqueiratec Год назад
@Diego tudo bem, da moral primereact e muito completo uso em todas apps e faz vídeo dele.
@PatsFerrer
@PatsFerrer 5 месяцев назад
Que massaaaa
@pablonicholassantos431
@pablonicholassantos431 5 месяцев назад
o bom dos vídeos do Diego é que eu acelero no máximo pra 1.25x, ele já fala no modo 2x hahahha sem falar na qualidade do conteúdo (:
@principe.borodin
@principe.borodin Год назад
Fantastico. Eu nao tinha visto essa parte desse jeito. Eu normalmente usaria uma factory com React.createElement
@fnandesrafael
@fnandesrafael Год назад
tenho apenas duas palavras pra esse design pattern: DO CARALHO.
@gabryelfhsoares
@gabryelfhsoares Год назад
Top demais
@gfbengel
@gfbengel Год назад
cara muito bom criar varios videos usando o mesmo projeto.. parece quase um "minicurso" distribuido por varios assuntos que podem ser mostrados não necessariamente relacionados em serie pq cada video funciona sozinho, mas que o exemplo mostrado encaixe em outros videos. por exemplo fazer um prox video focado em formatar datas com alguma lib e usar esse proj pra atualizar só o texto q ta no conteúdo q mostra a data da notificação. pra quem for ver, nao importa o projeto em si. pq é só um exemplo. mas quem ve o "grupo" dos videos desse projeto encaixa e da oturas perspectivas.
@gfbengel
@gfbengel Год назад
outro video que seria muito bom nesse sentido seria um focado em variants de botões com o tailwind pra na hora de colocar o action button ali passar apenas a cor e não as classes em si
@MrLOPIU22
@MrLOPIU22 Год назад
Muuuito top
@brunocarneiro7754
@brunocarneiro7754 8 месяцев назад
Muito bom
@daniellevi745
@daniellevi745 Год назад
Top de mais
@luizlahr
@luizlahr Год назад
Diego, mais uma vez um excelente conteudo. Uma curiosidade, Você ve alguma vantagem em utilizar o children declarando direto nas props como ReactNode ao invés de utilizar o PropsWithChildren? Ou é mais costume?
@denilsoncosta9837
@denilsoncosta9837 Год назад
A biblioteca shadcn ui, tem a mesma abordagem na forma de construção de componentes. Vou fazer alguns experimentos com esse pattern para ver se em termos de DX e tempo de execução, ele viável. Gostei muito do conteúdo.
@douglastrindadev
@douglastrindadev 3 месяца назад
shadcn usa o radix
@joaobibiano
@joaobibiano Год назад
Recomendo também a boa e velha clsx library para merge de css classes
@marceloviannadev
@marceloviannadev 7 месяцев назад
Pra ficar ainda melhor e menos verboso, você pode criar variações para cada componente filho que compõem o pai e passar de forma obrigatória ou opcional ou fazendo na mão (como eu gosto ou utilizando Tailwind variants por ex...) e restringir ainda mais a identidade visual de cada filho com todas as suas variações. Similar ao que libs fazem quando ao utilizar o componente filho por exemplo de ícone você declara via pros: size=sm color=purple icon=(já pode vir as opções de dentro e você só diz se é ícone y ou z) e tudo fica sempre concentrado dentro de cada filho não afetando o código final do pai, mantendo clean code, menos verbosidade e se utilizar técnicas como a do storybook por exemplo, cada componente seu pode ter um readme ensinando a usá-lo, descrevendo etc... e também, a tipagem do componente pode ser externa, os hooks e etc... sem falar em testcases já deixando o componente com diferentes useCases testados e aprovados... as possibilidades são infinitas e quanto mais você se aprofundar e entende isto, mais organizado e direto fica a leitura pra qualquer um que bater o olho já entender o que tá rolando... e pra fazer refactory, mudanças ou manutenções, fica delícia! 🤘🏻
@hamiceis
@hamiceis Год назад
Muito top
@matheusfd3
@matheusfd3 11 месяцев назад
Cara, acho incrivel. O que eu fico incredulo é como eu vou saber que eu precisaria de outra biblioteca para fazer um tal de merge nas classes, como ele chega a essa conclusão e sabe da existencia de uma biblioteca pra isso? é esse nivel que eu quero chegar.
@AmodeusR
@AmodeusR 10 месяцев назад
É simples, você não vai saber, a não ser que já saiba, é claro kkk Isso é coisa de você experimentar um problema e pesquisar soluções na internet, imaginando que outras pessoas já passaram pelo mesmo e até criaram uma solução, acabar ouvindo por outros assim como você ouviu do Diego nessa aula e agora sabe da existência dessa biblioteca, ou até de você mesmo criar a solução caso seja capaz e divulgá-la na internet. Não existe nenhuma magia ou ação do sobrenatural aqui, como é algo que depende da exposição e da ciência da existência de tais coisas, é algo que você simplesmente desenvolve quanto mais você está em contato com a área.
@Lcsglife3279
@Lcsglife3279 Год назад
Top em
@droom5259
@droom5259 11 месяцев назад
Que lindo
@emersonbarros6815
@emersonbarros6815 Год назад
Senti um ppuco de falta de um html mais semântico, fira isso otima demonstração do design pattern
@lucasfernandes9381
@lucasfernandes9381 Год назад
Gostei desse formato de vídeo aula. Os vídeos ao vivo também são bons, mas dispersam muito por causa do chat.
@faviomagallanes
@faviomagallanes Год назад
muchas gracias
@arozendojr
@arozendojr Год назад
bem legal
@alberto3641
@alberto3641 Год назад
Ver essa aula é saber/descobrir que o MaterialUI trabalha com outro pattern: o prop hell kkkkkkkkkkkkkkk
@AntonioCesarNunesdeAzevedoFilh
@AntonioCesarNunesdeAzevedoFilh 8 дней назад
genial
@gustavoleite7569
@gustavoleite7569 Год назад
até o min 8:21: Eu utilizaria os próprios metodos onNomeDaAcao pra saber se aquele component tem ou não aquela ação, não um hasAction ou actionType
@JoaoVictor-ct2zh
@JoaoVictor-ct2zh Год назад
Era exatamente o que eu procurava a muito tempo! Me surgiu uma dúvida, caso eu queira fazer o componente semelhante a estrutura do React Bootstrap, como seria? Por exemplo: , sem que eu precise criar um Card.Root.
6 месяцев назад
Atomic design tem essa pegada, vc coda mais, mas o resultado final é muito "libertador" em relação a criação de componentes.
@renatobarboza4122
@renatobarboza4122 Год назад
To começando a utilizar o Tailwind pra fazer estilizações nos meus apps, qual a melhor forma de indentação pra que não fique com essas linhas enormes e facilite a leitura?
Далее
O ERRO mais comum no React (você já fez isso)
13:26
Просмотров 121 тыс.
🤯️ Vini Jr. ✖️ Brahim 🤯
00:13
Просмотров 3,8 млн
Это iPhone 16
00:52
Просмотров 1,1 млн
U2J 2 W2D2, Tutorial 2
1:33:19
Просмотров 9
Design patterns in React
14:37
Просмотров 154 тыс.
JPEG is Dying - And that's a bad thing
8:09
Просмотров 91 тыс.
The Story of React Query
8:55
Просмотров 97 тыс.
Compound Components in React (Design Patterns)
18:21
Просмотров 33 тыс.
Recriei o dashboard do iFood com React (app fullstack)
13:26
I earn $1,753/day with this SIMPLE tech stack
6:59
Просмотров 379 тыс.
🤯️ Vini Jr. ✖️ Brahim 🤯
00:13
Просмотров 3,8 млн