The Codest
  • Sobre nós
  • Serviços
    • Desenvolvimento de software
      • Desenvolvimento de front-end
      • Desenvolvimento backend
    • Staff Augmentation
      • Programadores Frontend
      • Programadores de back-end
      • Engenheiros de dados
      • Engenheiros de nuvem
      • Engenheiros de GQ
      • Outros
    • Aconselhamento
      • Auditoria e consultoria
  • Indústrias
    • Fintech e Banca
    • E-commerce
    • Adtech
    • Tecnologia da saúde
    • Fabrico
    • Logística
    • Automóvel
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • A nossa equipa
  • Case Studies
  • Saber como
    • Blogue
    • Encontros
    • Webinars
    • Recursos
Carreiras Entrar em contacto
  • Sobre nós
  • Serviços
    • Desenvolvimento de software
      • Desenvolvimento de front-end
      • Desenvolvimento backend
    • Staff Augmentation
      • Programadores Frontend
      • Programadores de back-end
      • Engenheiros de dados
      • Engenheiros de nuvem
      • Engenheiros de GQ
      • Outros
    • Aconselhamento
      • Auditoria e consultoria
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • A nossa equipa
  • Case Studies
  • Saber como
    • Blogue
    • Encontros
    • Webinars
    • Recursos
Carreiras Entrar em contacto
Seta para trás VOLTAR
2022-05-09
Desenvolvimento de software

7 dicas e truques no React

The Codest

Mohamed El Amine DADDOU

Programador React

Procurando maneiras de melhorar seu código React? Este artigo contém dicas e truques que todo desenvolvedor do React deve conhecer. Vamos mergulhar nele!

Utilizar TypeScript

Quer estejamos a falar apenas de reagir ou outras bibliotecas, utilizando Tipografia ajudará muito nos esforços para manter a sua código organizado. comparemos o seguinte Javascript vs Typescript lidando com tipos de props.

importar PropTypes de 'prop-types'

function UserCard({ user }) {
return

{user.firstname}, {user.lastname}

}

UserCard.propTypes = {
user: PropTypes.shape({
firstname: PropTypes.string.isRequired,
lastname: PropTypes.string.isRequired
...
})
}

function UserList({ users }) {
return

{users.map((user) => )}

}

UserList.propTypes = {
users: PropTypes.arrayOf(PropTypes.shape({
firstname: PropTypes.string.isRequired,
lastname: PropTypes.string.isRequired
...
}))
}
interface Utilizador {
primeiro nome: String!
apelido: String!
...
}

function UserCard({ user }: { user: User }) {
return

{user.firstname}, {user.lastname}

}

function UserList({ users }: { users: User[] }) {
return

{users.map((user) => )}

Imagine ter todos os seus esquemas de dados como interfaces num único local e reutilizá-los em todo o resto do seu código. Isto não só o ajudará a evitar erros de digitação, como também, no caso de querer alterar o esquema, só o deverá alterar num único local.

Além disso, muitas bibliotecas javascript conhecidas estão a migrar para o Typescript, por exemplo: AdonisJS

Separar componentes de apresentação e de contentor

Separar os componentes de apresentação e de contentor torna o nosso código mais fácil de testar e de analisar.

Componentes de apresentação estão preocupados com o aspeto das coisas. Recebe o seu dados e comportamento dos componentes principais.

Componentes do contentor estão preocupados com como as coisas funcionam. Eles fornecem o dados e comportamento para componentes de apresentação ou outros componentes do contentor.

A utilização desta abordagem permite nós para reutilizar os mesmos componentes de apresentação com dados e comportamentos diferentes. Para além disso, torna o nosso código mais limpo e muito mais fácil de testar.

Veja o exemplo seguinte com o componente do utilizador, que é utilizado com diferentes contentores que fornecem dados e comportamentos diferentes.

function BuyerContainer() {
return
}

function SellerContainer() {
return
}

function UserComponent({ name, onClick }) {
return

}

Utilização Ganchos React e Componentes Funcionais Os Componentes Funcionais "referidos anteriormente como Componentes sem Estado" já não são sem Estado. Graças aos Ganchos React, agora pode usar o ganchoState para armazenar o estado num Componente funcional. ou até usar o ciclo de vida do componente usando useEffect. Componentes funcionais são fáceis de ler e testar. O React Core tem alguns outros hooks úteis que podem ser explorados na Referência de Hooks. O mais incrível é que também é possível definir hooks personalizados. No exemplo a seguir, criamos um hook react personalizado chamado useDebounce. Que é usado para limitar as chamadas da API de preenchimento automático quando o texto de entrada é alterado.

import { useEffect } from 'react';;
import { debounce } from 'lodash';
export default function useDebounce( fn, delay = 500 ) {
const debounced = useMemoOne( () => debounce( fn, delay ), [
fn,
delay,
] );
useEffect( () => () => debounced.cancel(), [ debounced ] );
return debounced;
}
export default function SearchComponent()
const fetchAutoComplete = useDebounce((e) => {
      // API de busca (opcional)
}, 1000) // 1 segundo

retornar (

{...}
)
}

Além disso, os hooks React são um ótimo substituto para os componentes de ordem superior (HoCs). Componente estilizado O Componente estilizado é uma biblioteca que permite a introdução de CSS dinâmico no nível do componente, aproveitando as vantagens do ES. Torna os seus componentes mais previsíveis e reutilizáveis. Esqueça a perda de muito tempo à procura do nome da classe correta para um elemento, enquanto tenta evitar a utilização de uma já existente. Com o Styled Components, garanta que seus estilos tenham escopo para o componente e nomes de classe gerados automaticamente na etapa de construção. Além disso, nunca foi tão fácil criar CSS dinâmico. Seus estilos serão gerados de acordo com as propriedades passadas para o componente. No exemplo a seguir, o estilo da div é dependente da prop delineada e do tema global.

const Wrapper = styled.div`

  fronteira: ${props => props.outlined ? '1px solid' : 'none'};

    fundo: ${props => props.theme.light ? 'black' : 'white'}

O último ponto sobre os componentes com estilo é que ele melhora o desempenho ao não carregar estilos desnecessários de componentes não utilizados. Biblioteca de preenchimento de slots Vamos definir um layout para seu aplicativo react. então você quer adicionar um widget na barra lateral apenas para uma página específica. Se você não considerou esse caso desde o início, isso pode exigir uma grande mudança no layout. Mas usando uma biblioteca como ‣ Você pode simplesmente definir um Slot na Barra Lateral. Então preencha esse slot com widgets apenas para páginas específicas. dessa forma você evitará passar flags ao longo de toda a árvore de componentes para acessar a Barra Lateral. Tem um comportamento semelhante ao dos Portais React, que também é uma óptima solução para casos como Modais, Tooltips...

import { Slot, Fill, Provider } from 'react-slot-fill';
const Sidebar = (props) =>
 
export default Toolbar;
Sidebar.Item = (props) =>

{ props.label }
const Widget = () =>
[

];
const Page = ({children}) =>

{filhos}

const HomePage = () =>

uma Página sem Widjet
const DashboardPage = () =>

uma Página com Widjet

Componentes de ordem superior Mesmo que os hooks React substituam os HOCs na maioria dos casos. Os HoCs ainda são uma ótima opção para ocultar a complexidade dos componentes, como fornecer vários props para componentes de página ou renderização condicional (rotas privadas, status de carregamento ...) O exemplo a seguir ilustra como podemos encapsular a complexidade de rotas privadas e props comuns de página em HoCs reutilizáveis aplicados a todas as páginas da aplicação. Tenha em mente que a maioria dos casos de HoCs pode ser substituída por Hooks React e que podemos, por engano, substituir props por HoCs compostos. Portanto, use HoCs apenas quando necessário para manter os componentes da página mais limpos. Caso contrário, use Ganchos React.

função withPrivateRoute(Componente) {
...
return function PrivateRoute(props) {
se (!userConnected) return ;
return ;
};
}
function withPageProps(Component) {
...
return function privateRoute(props) {
return ;
};
}
function ProfilePage({ navigation, currentPath, currentUser}) {
return
Página de perfil
}
export default withPrivateRoute(withPageProps(ProfilePage))

Limites de erro Os limites de erro são componentes de classe que captam todos os erros/excepções lançados ao nível dos filhos. Quando declarados no nível superior, permitem-lhe tratar corretamente os erros, mostrando uma mensagem de erro e registando o erro numa ferramenta de monitorização da plataforma, como o Sentry. Desta forma, será o primeiro a detetar erros e a tentar corrigi-los antes que tenham impacto na experiência do utilizador. Nota: ErrorBoundaries deve ser declarado na classe que não suporta componentes funcionais.

class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
static getDerivedStateFromError(error) {
return { hasError: true };
}
componentDidCatch(error, errorInfo) {
logErrorToMySentry(error, errorInfo);
}
render() {
se (this.state.hasError) {
return
Algo correu mal! Contactar o administrador
;
}
return this.props.children;

}
}

Artigos relacionados

Desenvolvimento de software

Ferramentas Javascript em ação

Descubra algumas ferramentas de recuperação JavaScript para elevar o nível do seu jogo de programação. Saiba mais sobre o ESLint, o Prettier e o Husky!

The Codest
Reda Salmi Programador React
Soluções para empresas e escalas

10 empresas do Dubai que vale a pena observar em 2020

O Dubai é o coração dos Emirados Árabes Unidos, com o seu mercado cada vez mais próspero de empresas globais e startups promissoras. Muitas podem gabar-se do seu sucesso internacional e de produtos notáveis....

Tuna Pinar

Subscreva a nossa base de conhecimentos e mantenha-se atualizado sobre os conhecimentos do sector das TI.

    Sobre nós

    The Codest - Empresa internacional de desenvolvimento de software com centros tecnológicos na Polónia.

    Reino Unido - Sede

    • Office 303B, 182-184 High Street North E6 2JA
      Londres, Inglaterra

    Polónia - Pólos tecnológicos locais

    • Parque de escritórios Fabryczna, Aleja
      Pokoju 18, 31-564 Cracóvia
    • Embaixada do Cérebro, Konstruktorska
      11, 02-673 Varsóvia, Polónia

      The Codest

    • Início
    • Sobre nós
    • Serviços
    • Case Studies
    • Saber como
    • Carreiras
    • Dicionário

      Serviços

    • Aconselhamento
    • Desenvolvimento de software
    • Desenvolvimento backend
    • Desenvolvimento de front-end
    • Staff Augmentation
    • Programadores de back-end
    • Engenheiros de nuvem
    • Engenheiros de dados
    • Outros
    • Engenheiros de GQ

      Recursos

    • Factos e mitos sobre a cooperação com um parceiro externo de desenvolvimento de software
    • Dos EUA para a Europa: Porque é que as empresas americanas decidem mudar-se para a Europa?
    • Comparação dos centros de desenvolvimento da Tech Offshore: Tech Offshore Europa (Polónia), ASEAN (Filipinas), Eurásia (Turquia)
    • Quais são os principais desafios dos CTOs e dos CIOs?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Direitos de autor © 2026 por The Codest. Todos os direitos reservados.

    pt_PTPortuguese
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese es_ESSpanish nl_NLDutch etEstonian elGreek cs_CZCzech pt_PTPortuguese