Create components in this way in React (Composition Pattern)

Create components in this way in React (Composition Pattern)

Rocketseat

1 год назад

102,399 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

Eugenio Rosario
Eugenio Rosario - 08.11.2023 17:43

Muito top cara, Obrigado por compartilhar

Ответить
Lukas Lima
Lukas Lima - 30.10.2023 23:30

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!

Ответить
Lucas Marques
Lucas Marques - 23.10.2023 02:37

akgyen sabe qual o nome da extensao desses icons (arquivos etc) ?

Ответить
Ecthon Borhis Silva de Almeida
Ecthon Borhis Silva de Almeida - 26.09.2023 23:01

Onde eu encontro o repo desse projeto?

Ответить
LordGhapa
LordGhapa - 24.09.2023 04:24

sou apenas um júnior acabei ficando surpreso pois eu estava fazendo algo semelhante com styledComponent o que é deveras complexo e tudo ficava no style.ts fica styled.wrapper styled.button etc..., separa cada parte em um arquivo diferente facilita bem mais o entendimento, so fico um pouco assustado com a quantidade absurda de arquivos que um projeto real pode chegar a ter mas acho que é so questão de costume

Ответить
Tiago Valentim
Tiago Valentim - 22.09.2023 18:38

Ao usar esse pattern, performance deveria ser uma preocupação? Quando a gente importa o objeto Notification, vem todo o pacote de componentes relacionados, certo?

Ответить
Guilherme
Guilherme - 21.09.2023 17:31

Muito interessante!

Ответить
Douglas Vulcano
Douglas Vulcano - 14.09.2023 04:37

Cara, baita conteúdo!

Ответить
Guilherme Silva
Guilherme Silva - 13.09.2023 20:32

Tenho uma dúvida em relação ao next13, to tentando fazer um select personalizado usando composition, eu precisei criar um contexto para compartilhar alguns estados entres esses componentes que compoem o Select. Dentre esses componentes tem um de Icon semelhantes ao do vídeo. O problema é que o Icon precisa ser `use cliente` porém o Next não deixa eu passar o ícone como ElementType. Erro: "Functions cannot be passed directly to Client Components unless you explicitly expose it by marking it with "use server"".

Ответить
Lucas React
Lucas React - 08.09.2023 21:56

Muito interessante essa forma de criar componentes!!!

Ответить
Matheus Ferreira
Matheus Ferreira - 07.09.2023 23:15

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.

Ответить
Victor Carvalho
Victor Carvalho - 07.09.2023 02:34

alguém tem a URL desse projeto no github?

Ответить
Guilherme Rillei
Guilherme Rillei - 06.09.2023 23:28

Diego, você é o cara mais foda que eu não conheço!

Ответить
Paula Soares
Paula Soares - 01.09.2023 05:13

surreal de bom. esse pattern facilita muito como eu não sabia disso?

Ответить
AndersonPGS
AndersonPGS - 30.08.2023 20:32

Qual o tema, do vscode e dos icones/materials?

Ответить
DrooM
DrooM - 27.08.2023 07:05

Que lindo

Ответить
Felipe Miranda
Felipe Miranda - 19.08.2023 05:17

Se eu tenho uma lista com 100 resultados, ainda vale a pena usar esse pattern?

Ответить
Eduardo Bertozi
Eduardo Bertozi - 16.08.2023 14:44

Muito bom! Isso vai ajudar muito.

Ответить
Luan Cordeiro
Luan Cordeiro - 13.08.2023 21:11

muito bom, vou testar.

Ответить
Leandro B
Leandro B - 13.08.2023 17:43

Vlw pelos dica no final, eu tava mesmo procurando algo como o Radix

Ответить
Eduardo Correia
Eduardo Correia - 12.08.2023 02:43

qual gravador de tela usou aqui para ter esse avatar que sinaliza qnd esta falando?

Ответить
Kevin Madalosso Veiga
Kevin Madalosso Veiga - 07.08.2023 22:56

muito bom esse pattern, excelente vídeo Diego

Ответить
Luan Kisaki
Luan Kisaki - 02.08.2023 21:07

Certeza que vocês estão me vigiando. Eu estava com esse mesmo problema (dos ícones) e resolvi EXATAMENTE como você citou ( antes do ElementType, no caso... kkkkk). Como assim?!?!?! ^^

Ответить
Ronald tomaz
Ronald tomaz - 02.08.2023 05:43

Conteúdo top demais, criando componentes dessa forma traz mais flexibilidade e facilita a manutenção. Será que vou usar isso pra tudo ? rsss

Ответить
Pedro Machado
Pedro Machado - 01.08.2023 00:47

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.

Ответить
Darlon Henri Souza
Darlon Henri Souza - 28.07.2023 21:57

Funciona no React Native?

Ответить
Jonatas Bueno do Livramento
Jonatas Bueno do Livramento - 28.07.2023 06:35

Muito bom, esse pattern salva vidas !!!

Ответить
Willian Ramos
Willian Ramos - 27.07.2023 00:59

eu queria mto ver os videos mais o jeito q o cara fala coisas como root eu nao consigo
F

Ответить
Emerson Barros
Emerson Barros - 26.07.2023 18:35

Senti um ppuco de falta de um html mais semântico, fira isso otima demonstração do design pattern

Ответить
Renato Barboza
Renato Barboza - 25.07.2023 20:21

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?

Ответить
Fernandes
Fernandes - 22.07.2023 02:07

tenho apenas duas palavras pra esse design pattern: DO CARALHO.

Ответить
Anderson de Carvalho
Anderson de Carvalho - 20.07.2023 06:57

Tem algo que me incomoda no composition pattern, que é a possibilidade de colocar os componentes children fora da ordem e grande. Por exemplo, temos o componente RootComponent:


function RootComponent() {
return <p>Root Content</p>;
}

function HeaderComponent() {
return <p>Header Content</p>;
}

function ContentComponent() {
return <p>Main Content</p>;
}

function FooterComponent() {
return <p>Footer Content</p>;
}


<RootComponent>
<HeaderComponent />
<ContentComponent />
<FooterComponent />
<RootComponent/>


Nada impete e me proibe de fazer assim:

<FooterComponent>
<HeaderComponent />
<ContentComponent />
<RootComponent />
<FooterComponent

Pois todos os componentes recebem children e isso é muito genêrico.


Eu prefiro continuar rebendo os componente como props e ter controle onde colocar os componentes.

function RootComponent({ headerComponent, contentComponent, rooterComponent}) {
return (
<>
<p>Root Content</p>
{ headerComponent }
{ contentComponent }
{ rooterComponent }
</>
);
}

Detalhe, esse código está apenas como exemplo, no código em produção teríamos react.memo e outras boas práticas.

O que você acha sobre isso, faz sentido?

Ответить
Emesson Cavalcante
Emesson Cavalcante - 19.07.2023 00:02

nao goustei, asmei

Ответить
Marcelo Junior da Luz
Marcelo Junior da Luz - 18.07.2023 20:19

Alguem tem alguma sugestao de artigo que ajudasse a ver como aplicar essas dicas do video, pra criar formularios? Pq um formulario que cada form tem seus campos de validacao específicos, teria alguma forma de nao precisar ficar replicando eles, por exemplo pra não precisar criar um formLogin, um formRegister e por ai vai. Ou não tem jeito de evitar.

Ответить
Paulo Silva
Paulo Silva - 16.07.2023 14:37

Sensacional Diego 🚀

Ответить
Alan Miguel Rocha
Alan Miguel Rocha - 15.07.2023 05:01

Pattern muito bom, eu apenas não gosto da verbosidade do .Root e costumo deixar só o nome do Elemento pai.

Ответить
Vert Cortes
Vert Cortes - 14.07.2023 17:37

Que conteúdo delicioso de ser consumido!

Ответить
João Victor
João Victor - 14.07.2023 00:13

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: <Card><Card.Body></Card.Body></Card>, sem que eu precise criar um Card.Root.

Ответить
Cairon M
Cairon M - 13.07.2023 16:48

Melhor vídeo

Ответить
Cesar Sturmer
Cesar Sturmer - 12.07.2023 02:50

niceeeeeeeeeeeeeeeeeeee

Ответить
Vinicius Rubia
Vinicius Rubia - 11.07.2023 23:38

Alguém sabe qual é essa extensão para quando salvar o arquivo, importar as coisas já?

Ответить
Canal 2%
Canal 2% - 11.07.2023 19:09

ta me dando nervoso essa bola roxa pingando na tela

Ответить
Thiagus
Thiagus - 11.07.2023 15:23

Ééé, Tailwind é horroroso msm

Ответить
Márcio Junior
Márcio Junior - 10.07.2023 11:51

Gosto muito de usar o design atoms por conta disso também Diegao

Ответить
Lamarcke
Lamarcke - 10.07.2023 08:22

Uma dica boa:
Pra evitar ter que exportar sempre um componente "Root", você pode usar o próprio componente inicial como Root, assim:
function Navbar(props) {
// Navbar implementation
}

function Section(props) {
// Section implementation
}

Navbar.Section = Section;


export default Navbar;

Dessa forma, o componente <Navbar /> vai poder ser renderizado corretamente, e você ainda pode acessar os elementos dentro dele (no JS, tudo é objeto, até funções kkkk).

Ответить
Klethonio Ferreira
Klethonio Ferreira - 10.07.2023 01:17

I don't know... Isso faz todo sentido para mim, mas components demais atrapalham na manutenção de um app grande... E acho que não é nem isso. Com o tempo vai ficar difícil definir o escopo certo de cada component e reutilizá-los corretamente. Isso definitivamente é muito bom, mas precisa de muita experiência para implementar e principalmente sem deadline. Uma boa documentação pode ajudar.

Ответить
Lcs Life
Lcs Life - 09.07.2023 22:14

Top em

Ответить
William Felix
William Felix - 09.07.2023 14:57

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😂

Ответить
rol
rol - 09.07.2023 13:21

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!

Ответить