Escolar Documentos
Profissional Documentos
Cultura Documentos
Hierarquização de pastas
src/
src/index.tsx
src/App.tsx
Convenções de código:
App: Deve ser responsável por renderizar os Providers (ContextAPI), juntamente com o componente inicial.
src/assets/
assets/imgs/banners/banner-header.png
assets/fonts/rubrik/rubrik-medium.woff
src/pages/
src/pages/Login
src/components/
Qualquer tipo de componente do sistema que não é uma página. Ex: Header, Footer
src/components/Header
src/router
Configuração de rotas do projeto, para componentes páginas e seus respectivos filhos, declarando-os como protegidos ou não
default: index alocado na raíz da pasta, no qual as configurações de rotas são exportados e criados no mesmo
src/router/index.tsx
src/store
Componentes ou configurações globais do projeto, utilizando ContextAPI. Trata-se de qualquer tipo de dado que tende a circular pelo
projeto como um todo. Os dados são compartilhados entre os componentes.
src/store/useLoadScreen
src/store/useAuthentication
src/hooks
Funções de configuração ou comportamento auxiliares. Diferentemente do Provider, ele não compartilha o mesmo dado entre os
componentes, seu objetivo é compartilhar uma lógica de código.
default: index alocado na raíz da pasta, importando e exportando todos os hooks customizados
src/hooks/useInput
src/hooks/useMath
Alocados em src:
App: Deve ser responsável por renderizar os Providers (ContextAPI), juntamente com o componente inicial.
Exemplo de código:
index: Deve ser responsável SOMENTE por renderizar o BrowserRouter (provém das configurações de rotas) envolvendo o <App/>, e
importar módulos globais (bootstrap, configurações aws).
Exemplo de código:
1 import React from "react";
2 import ReactDOM from "react-dom/client";
3
4 import { BrowserRouter } from "react-router-dom";
5
6 import App from "./App";
7
8 import "src/index.css";
9 import "bootstrap/dist/css/bootstrap.min.css";
10 import "@aws-amplify/ui-react/styles.css";
11
12 import { Amplify } from "aws-amplify";
13 import aws_exports from "src/aws-exports";
14 Amplify.configure(aws_exports);
15
16 ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
17 // <React.StrictMode>
18 <BrowserRouter>
19 <App />
20 </BrowserRouter>
21 // </React.StrictMode>
22 );
23
OBS: O <React.StrictMode/> é responsável por renderizar duas vezes o componente instanciado em ambiente localhost. Por via de
testes, esse código pode ser previamente comentado.
Atenção
Ao importar um componente ou módulo criado dentro do projeto, não é necessário utilizar dot walking, use a pasta src como
referência.
Maneira Incorreta:
Maneira Correta:
Convenções e padronizações
Componentes:
Estrutura:
1 criar pasta do componente: src/components/Header
2
3 dentro da pasta do componente:
4 index.tsx: Contém o próprio componente
5 style.tsx: Contém definições de estilização do componente
Ao declarar o componente como index, o compilador do IDE, ao importar o módulo, compreende que é necessário importar o
arquivo index da pasta raíz, evitando redundância de código.
Exemplo:
Maneira Incorreta:
Maneira Correta:
1 //using index.tsx
2 export {default as Header} from "./Header"
OBS: Ao declarar um componente, NÃO é necessário utilizar (somente utilizar ao desenvolver um componente como módulo no NPM
package react-library, por exemplo):
Variáveis e funções:
OBS: Para mitigar problemas de renderização e compreensão, declare o estado inicial da variável ([], {}, ““, 0)
Atenção!
Utilize useState SOMENTE para variáveis que precisam ser observadas e necessitem de modificações
Uma variável stateful só funciona dentro do contexto de um Componente, dado o exemplo acima.
Iterações de um Array:
Ao iterar sobre um array retornando componentes, o React necessita de uma propriedade key para referenciar as posições de cada
componente iterado. NÃO utilize o index como valor da propriedade key ao retornar, prefira criar uma chave id com valores únicos.
Exemplo de código:
Maneira Incorreta:
Maneira Correta:
Renderizações:
Atenção!
Verifique se o componente criado, ao utilizar váriaveis ou funções observadoras, está sendo renderizado diversas vezes
desnecessariamente. Um teste simples seria inserir no início de sua declaração, um console.log();
Estilizações em geral:
Evitar utilizar classes não objetivas na propriedade className, utilize somente definições específicas. Exemplo:
1 //instead of
2 <h1 className="d-flex justify-content-center p-1 m-3 align-items-center">Custom h1<h1/>
3
4 //use in style.tsx file
5 const CustomH1 = styled.h1`
6 dipslay: flex;
7 justify-content: center;
8 align-items: center;
9 `
10
11 //import and return
12 <CustomH1 className="p-1 m-3">Custom h1<h1/>
Evitar utilizar style in-line como propriedades em componentes. Utilize styled-components para aplicar propriedades CSS, assim evitando
má visualização de código. Exemplo:
1 //instead of
2 <h1 style={{background: "red", color: "white"}}>Custom h1<h1/>
3
4 //use in style.tsx file
5 const customH1 = styled.h1`
6 background: "red";
7 color: "white";
8 `
9 //import and return
10 <CustomH1>Custom h1<CustomH1/>
Provider (ContextAPI):
Estrutura:
Exemplo:
Repos (CodeCommit):
Caso necessite de um repositório front-end previamente configurado, seguindo as padronizações comentadas, acesse os links: