Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

Como desenvolvedor React ou React Native, é importante entender o conceito de contêiner e componentes de apresentação.

Esses padrões de design ajudam na separação adequada de interesses. Você pode usar esse conceito para garantir que estruturará seu código de maneira mais sustentável e escalável.

O que são componentes de contêiner?

Os componentes de contêiner, também conhecidos como componentes inteligentes, são responsáveis ​​por gerenciar dados e lógica em seu aplicativo. Eles lidam com tarefas como buscar dados de uma API, atualizar o estado e processar as interações do usuário.

Para implementar essa estrutura, você pode usar uma biblioteca como React-Redux para conectar seus componentes à loja e passar dados e ações para seus componentes filhos ou componentes de apresentação.

O que são componentes de apresentação?

Componentes de apresentação são responsáveis ​​por exibir dados de seus componentes pai. Eles geralmente não têm estado e se concentram na interface do usuário e na representação visual dos dados.

Esse estado os torna fáceis de manipular e testar, ganhando o nome de componentes burros. O estado burro dos componentes de apresentação permite reutilizá-los em todo o aplicativo. Isso evita código ruim e repetitivo.

Por que usar contêineres e componentes de apresentação?

A resposta curta e simples para a pergunta é: separação de interesses. Este é um princípio fundamental em vários paradigmas, incluindo programação orientada a objetos, funcional e orientada a aspectos. No entanto, muitos desenvolvedores React tendem a ignorar esses conceitos e optar por escrever um código que simplesmente funcione.

O código que simplesmente funciona é ótimo, até que pare de funcionar. Código mal organizado é mais difícil de manter e atualizar. Isso pode tornar complicado adicionar novos recursos ou trazer outros programadores para trabalhar no projeto. Corrigir esses problemas já criados é uma carga de trabalho e é melhor preveni-los desde o início.

A aplicação do padrão de design de contêiner e componentes de apresentação garante que cada componente em seu projeto tenha uma tarefa clara com a qual lidar. Isso atinge uma estrutura modular onde cada componente otimizado se reúne para completar seu aplicativo.

Seus componentes ainda podem se sobrepor; a divisão de funções entre um recipiente e um componente de apresentação nem sempre é distinta. No entanto, como regra geral, você deve focar seus componentes de apresentação em dados visuais e seus componentes de contêiner em dados e lógica.

Como usar contêineres e componentes de apresentação em React Native

Em um aplicativo React Native típico, é comum criar componentes que contenham códigos de apresentação e relacionados à lógica. Você pode buscar dados de uma API, gerenciar o estado de um formulário e exibir a saída, tudo em uma classe. Considere um aplicativo simples que buscar uma lista de usuários de uma API e mostrar seus nomes e idade.

Você pode fazer isso com um único componente, mas resultará em um código difícil de ler, não reutilizável e mais difícil de testar e manter.

Por exemplo:

importar Reagir, { useState, useEffect } de'reagir';
importar { Ver, Texto, FlatList } de'reagir nativo';

const UserList = () => {
const [usuários, setUsuários] = useState([]);

useEffect(() => {
const buscarUsuários = assíncrono () => {
const resposta = aguardam buscar(' https://example.com/users');
const dados = aguardam resposta.json();
setUsers (dados);
};

buscarUsuários();
}, []);

retornar (
dados={usuários}
keyExtractor={item => item.id}
renderItem={({ item }) => (

Nome: {item.name}</Text>
Idade: {item.age}</Text>
</View>
)}
/>
);
};

exportarpadrão Lista de usuários;

Neste exemplo, Lista de usuários é responsável por gerenciar o estado de um campo de entrada, buscar dados de uma API e renderizar os dados.

A maneira melhor e mais eficiente de implementar isso é separar a lógica em UserList em componentes de apresentação e contêiner.

Você pode criar um UserListContainer componente que é responsável por buscar e gerenciar os dados do usuário. Ele pode então passar esses dados para um componente de apresentação, Lista de usuários, como prop.

importar Reagir, { useState, useEffect } de'reagir';

// Componente do contêiner
const UserListContainer = () => {
const [usuários, setUsuários] = useState([]);

useEffect(() => {
const buscarUsuários = assíncrono () => {
const resposta = aguardam buscar(' https://example.com/users');
const dados = aguardam resposta.json();
setUsers (dados);
};

buscarUsuários();
}, []);

retornar<Lista de usuáriosUsuários={Usuários} />;
};

exportarpadrão UserListContainer;

Você pode separar a apresentação entre dois componentes de apresentação: Do utilizador e Lista de usuários. Cada um é responsável por simplesmente gerar marcação com base nas props de entrada que recebem.

importar { Ver, Texto, FlatList } de'reagir nativo';

// Componente de apresentação
const Usuário = ({ nome idade }) => (

Nome: {nome}</Text>
Idade: {idade}</Text>
</View>
);

// Componente de apresentação
const UserList = ({ Usuários }) => (
dados={usuários}
keyExtractor={item => item.id}
renderItem={({ item }) => <Do utilizadornome={nome do item}idade={item.idade} />}
/>
);

O novo código separa o componente original em dois componentes de apresentação, Do utilizador e Lista de usuários, e um componente de contêiner, UserListContainer.

Práticas recomendadas para implementação de contêineres e componentes de apresentação

Ao usar componentes de contêiner e apresentação, é importante seguir algumas práticas recomendadas para garantir que os componentes funcionem conforme o esperado.

  1. Cada componente deve ter um papel claro e específico. O componente contêiner deve gerenciar o estado e o componente de apresentação deve lidar com a apresentação visual.
  2. Sempre que possível, use componentes funcionais em vez de componentes de classe. Eles são mais simples, fáceis de testar e oferecem melhor desempenho.
  3. Evite incluir lógica ou funcionalidade em um componente que seja irrelevante para sua finalidade. Isso ajuda a manter os componentes focados e fáceis de manter e testar.
  4. Use adereços para comunicação entre componentes, separando claramente as preocupações e evitando componentes fortemente acoplados.
  5. Atualizações desnecessárias no estado podem levar a problemas de desempenho, por isso é importante atualizar o estado apenas quando necessário.

Seguir essas práticas recomendadas garante que o contêiner e os componentes de apresentação funcionem juntos de maneira eficaz para forneça uma solução limpa, organizada e escalável para gerenciar o estado e a apresentação visual em seu aplicativo React Native.

Os benefícios do uso de contêineres e componentes de apresentação

O contêiner e os componentes de apresentação podem fornecer vários benefícios. Eles podem ajudar a melhorar sua estrutura de código, capacidade de manutenção e escalabilidade. Eles também resultam em melhor colaboração e delegação de tarefas entre as equipes. Eles podem até aumentar o desempenho e a otimização do seu aplicativo React Native.

Siga as práticas recomendadas para implementar esses componentes e você poderá criar aplicativos React Native melhores e mais escaláveis.