1
resposta

Melhor abordagem do Component Container

Em um dos cursos anteriores de react, foi ensinado que existe componentes lógicos, e componentes de renderização. Como por exemplo (no curso) A Timeline - componente lógico, e a FotoItem componente de renderização. Queria saber se é uma boa prática implementar o conceito de Component Container nos componentes tanto lógicos quanto de renderização.

1 resposta

Olá, Luiz.

Não sou um especialista em React. Mas me parece que você confundiu alguns conceitos. Pelo que eu entendo dentro do React temos dois tipos de components: presentational components (componentes de apresentação) e container components (Componentse container).

O você está chamando de componentes lógicos na verdade é a mesma coisa que o container components e o que você chamou de componente de renderização é na verade o presentational components.

Vou explicar minha visão de ambos.

Os presentational compoenents também conhecido como componentes "burros", tem as seguintes responsabilidades:

  • Cuidam da aparência das coisas, tudo que visual é o que você chamou de componente de renderização;
  • Geralmente tem marcação do DOM e estilos próprios;
  • É independente do restante da aplicação, sem se preocupar com o dados e focando apenas na apresentação do mesmo;
  • Não sabe como os dados são carregados ou alterados;
  • Recebe os dados e callbacks via props;
  • É muito raro ter seus próprios estados, mas sempre podemos quebrar algumas regras.

Pode estar faltando algum comportamento que não me lembro, mas normalmente utilizo essas regras pra determinar o que é parte do presentational components

Os container components também conhecido como o componente "inteligente", tem as seguintes responsabilidades:

  • Estão preocupados com a lógica e como funciona as regras de negócio envolvidas no sistema;
  • Nunca tem algum estilo, mas pode tem uma <div> para envolver algum componente;
  • Server os dados para os presentational components ou outro container components;
  • Cuida de se comunicar com os dados (store) e utiliza de callback para informar o presentational components;

Também posso estar esquecendo algum regra que levo em consideração quando vou criar meus container components, mas sem dúvida essas são as mais importantes.