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.