SPA com React.js: Guia Prático para Criação de Apps

As Single Page Applications (SPAs) revolucionaram a forma como construímos aplicações web. Diferentemente de sites tradicionais que recarregam a página a cada cliqueEventos no JavaScript: onClick, onChange e maisEventos no JavaScript: onClick, onChange e maisDescubra como os eventos em JavaScript, como onClick e onChange, possibilitam interações dinâmicas e melhoram a experiência do usuário em páginas web., as SPAs renderizam todo o conteúdo em uma única página, atualizando apenas as partes necessárias. O React.js encaixa-se perfeitamente nesse modelo, proporcionando uma forma declarativa de criar interfaces e lidar com a atualização de dados de maneira eficiente.

Neste tutorial, exploraremos:

O que é uma Single Page Application?🔗

Uma SPA é uma aplicação que carrega uma única página HTMLO que é HTML? Fundamentos, História e Evolução da LinguagemO que é HTML? Fundamentos, História e Evolução da LinguagemDescubra a origem e evolução do HTML, entendendo sua importância na estrutura da web e como influenciou o desenvolvimento digital moderno. e atualiza dinamicamente seu conteúdo conforme a interação do usuário. Em vez de recarregar a página inteira, o navegador troca apenas fragmentos necessários por meio de JavaScriptIntrodução ao JavaScript e Configuração do AmbienteIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente.. Isso resulta em:

Por que React.js para SPAs?🔗

O React.js, criado pelo Facebook, organiza a interface em componentesTags e Elementos: Sintaxe e HierarquiaTags e Elementos: Sintaxe e HierarquiaDescubra os fundamentos do HTML: aprenda sobre tags, elementos, hierarquia e boas práticas para criar páginas bem estruturadas e acessíveis. isolados, facilitando a reutilização e a manutenção do código. Alguns destaques:

Criando um Projeto Básico em React🔗

Para iniciar um projeto React, costuma-se utilizar Create React App. Com ele instalado, a criação de uma nova aplicação React torna-se simples:

npx create-react-app meu-projeto-spa
cd meu-projeto-spa
npm start

Após executar o comando npmIntrodução ao Node.js: Servidor e FerramentasIntrodução ao Node.js: Servidor e FerramentasDescubra como dominar o Node.js e criar servidores HTTP. Aprenda a instalar, configurar e utilizar o NPM, além de aplicar práticas no desenvolvimento web. start, o servidor de desenvolvimento é iniciado. Por padrão, o projeto será acessível em http://localhost:3000.

Estrutura de Arquivos🔗

Quando se cria um projeto com Create React App, surge uma estrutura básica semelhante a:

meu-projeto-spa/
├─ public/
│  ├─ index.html
├─ src/
│  ├─ App.js
│  ├─ index.js
│  ├─ ...
├─ package.json

Conceito de Componentes🔗

No React, tudo gira em torno de componentesTags e Elementos: Sintaxe e HierarquiaTags e Elementos: Sintaxe e HierarquiaDescubra os fundamentos do HTML: aprenda sobre tags, elementos, hierarquia e boas práticas para criar páginas bem estruturadas e acessíveis.. Você pode criar classesAtributos HTML: `id`, `class`, `style`, `data-*`Atributos HTML: `id`, `class`, `style`, `data-*`Aprenda a aplicar atributos id, class, style e data-* no HTML para organizar, estilizar e dinamizar sua página com praticidade e eficiência. ou, mais recomendavelmente nos projetos atuais, funçõesFunções e Escopo no JavaScriptFunções e Escopo no JavaScriptAprenda a utilizar funções e escopos em JavaScript com nosso guia prático. Melhore sua organização de código e evolua seus projetos com boas práticas. para definir comportamentos e renderizar a interface.

Exemplo de ComponenteCriando Componentes Interativos ReutilizáveisCriando Componentes Interativos ReutilizáveisAprenda como criar e organizar componentes interativos e reutilizáveis com JavaScript, mantendo estados independentes e facilitando a manutenção do código. Funcional simples:

function Cabecalho() {
  return (
    <header>
      <h1>Minha SPA em React</h1>
    </header>
  );
}
export default Cabecalho;

Para utilizar esse componenteCriando Componentes Interativos ReutilizáveisCriando Componentes Interativos ReutilizáveisAprenda como criar e organizar componentes interativos e reutilizáveis com JavaScript, mantendo estados independentes e facilitando a manutenção do código. em outro trecho do código:

import React from 'react';
import Cabecalho from './Cabecalho';
function App() {
  return (
    <div>
      <Cabecalho />
      <p>Bem-vindo(a) à aplicação!</p>
    </div>
  );
}
export default App;

Estado e Props🔗

O estado (state) de um componenteCriando Componentes Interativos ReutilizáveisCriando Componentes Interativos ReutilizáveisAprenda como criar e organizar componentes interativos e reutilizáveis com JavaScript, mantendo estados independentes e facilitando a manutenção do código. é como informações internas que influenciam na forma de renderização dele. Já as props (propriedadesClasses e Herança em ES6+Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters.) são valores passados de um componenteCriando Componentes Interativos ReutilizáveisCriando Componentes Interativos ReutilizáveisAprenda como criar e organizar componentes interativos e reutilizáveis com JavaScript, mantendo estados independentes e facilitando a manutenção do código. “pai” para um “filho”. Juntas, tornam a aplicação reativa.

Exemplo de uso de useState

import React, { useState } from 'react';
function Contador() {
  const [contagem, setContagem] = useState(0);
  return (
    <div style={{ margin: '20px' }}>
      <p>Você clicou {contagem} vezes.</p>
      <button onClick={() => setContagem(contagem + 1)}>
        Clique para somar
      </button>
    </div>
  );
}
export default Contador;

Aqui, useState(0) inicializa o estadoCriando Componentes Interativos ReutilizáveisCriando Componentes Interativos ReutilizáveisAprenda como criar e organizar componentes interativos e reutilizáveis com JavaScript, mantendo estados independentes e facilitando a manutenção do código. com valor 0. Cada vez que o botão é clicado, chamamos setContagem(contagem + 1), atualizando o estado e re-renderizando o componenteCriando Componentes Interativos ReutilizáveisCriando Componentes Interativos ReutilizáveisAprenda como criar e organizar componentes interativos e reutilizáveis com JavaScript, mantendo estados independentes e facilitando a manutenção do código..

SPA na Prática com React Router🔗

Em uma aplicação de página única, você pode usar bibliotecas como React Router para gerenciar o histórico de navegação e as diferentes renderizações da interface.

1. Instale o React Router:

npm install react-router-dom

2. Crie rotas dentro do seu componenteCriando Componentes Interativos ReutilizáveisCriando Componentes Interativos ReutilizáveisAprenda como criar e organizar componentes interativos e reutilizáveis com JavaScript, mantendo estados independentes e facilitando a manutenção do código. principal App.js, por exemplo:

import React from 'react';
import { BrowserRouter as Router, Route, Switch, Link } from 'react-router-dom';
import PaginaInicial from './Paginas/PaginaInicial';
import Sobre from './Paginas/Sobre';
function App() {
  return (
    <Router>
      <nav>
        <Link to="/">Início</Link> | <Link to="/sobre">Sobre</Link>
      </nav>
      <Switch>
        <Route exact path="/" component={PaginaInicial} />
        <Route path="/sobre" component={Sobre} />
      </Switch>
    </Router>
  );
}
export default App;

3. Crie os componentesTags e Elementos: Sintaxe e HierarquiaTags e Elementos: Sintaxe e HierarquiaDescubra os fundamentos do HTML: aprenda sobre tags, elementos, hierarquia e boas práticas para criar páginas bem estruturadas e acessíveis. de página:

// src/Paginas/PaginaInicial.js
import React from 'react';
function PaginaInicial() {
  return (
    <div>
      <h2>Página Inicial</h2>
      <p>Bem-vindo(a) à nossa SPA!</p>
    </div>
  );
}
export default PaginaInicial;
// src/Paginas/Sobre.js
import React from 'react';
function Sobre() {
  return (
    <div>
      <h2>Sobre Nós</h2>
      <p>Aqui você encontra tudo sobre a nossa aplicação!</p>
    </div>
  );
}
export default Sobre;

Assim, ao clicar no link Sobre, nenhuma página completa é recarregada. O React Router intercepta a navegação e exibe o componenteCriando Componentes Interativos ReutilizáveisCriando Componentes Interativos ReutilizáveisAprenda como criar e organizar componentes interativos e reutilizáveis com JavaScript, mantendo estados independentes e facilitando a manutenção do código. Sobre diretamente na tela, tornando o comportamento de SPA e garantindo transiçõesTransições: transition-property, transition-duration, timing-functionTransições: transition-property, transition-duration, timing-functionTransforme sua interface com transições em CSS. Aprenda a aplicar transition-property, duration e timing-function para criar animações suaves e modernas. suaves.

graph LR A[Usuário clica em Link ou URL] --> B[React Router verifica rota] B --> C[Carrega Componente Correto] C --> D[Renderiza sem recarregar a página]

Acima, um diagrama demonstrando como o React Router lida com a navegação internaLinks e Âncoras: `<a href=''>`, Links Absolutos vs. RelativosLinks e Âncoras: `<a href=''>`, Links Absolutos vs. RelativosAprenda a utilizar a tag <a> para criar links absolutos, relativos e âncoras internas em HTML. Descubra boas práticas para navegação e estrutura de sites., sem necessidade de recarregar o HTML inteiro.

Boas Práticas🔗

1. Organização de pastas: Separe componentes de páginas (Page Components) e componentesTags e Elementos: Sintaxe e HierarquiaTags e Elementos: Sintaxe e HierarquiaDescubra os fundamentos do HTML: aprenda sobre tags, elementos, hierarquia e boas práticas para criar páginas bem estruturadas e acessíveis. visuais (UI Components).

2. Gerenciamento de estadoCriando Componentes Interativos ReutilizáveisCriando Componentes Interativos ReutilizáveisAprenda como criar e organizar componentes interativos e reutilizáveis com JavaScript, mantendo estados independentes e facilitando a manutenção do código. global: Para aplicações mais complexas, considere adotá-lo (por exemplo, Redux), mas apenas se necessário.

3. PerformanceDebugging e Ferramentas de Desenvolvimento do NavegadorDebugging e Ferramentas de Desenvolvimento do NavegadorAprenda a depurar código JavaScript com as Ferramentas do Navegador. Use console, breakpoints e debugger para solucionar bugs de forma prática.: Use React.memo ou técnicas de code splitting (lazy loadingLazy Loading e Otimização de ImagensLazy Loading e Otimização de ImagensDescubra como utilizar Lazy Loading e otimização de imagens para acelerar o carregamento e melhorar a performance das páginas web.) para melhorar desempenho em componentes grandes.

4. Estrutura semânticaO que é HTML5? Novas Tags e RecursosO que é HTML5? Novas Tags e RecursosDescubra como o HTML5 revolucionou a web com semântica aprimorada e recursos multimídia nativos, otimizando sites para melhor experiência e SEO.: Embora React incentive a componentização, mantenha marcação semântica e boas práticas de acessibilidadeBoas Práticas de AcessibilidadeBoas Práticas de AcessibilidadeAprenda práticas e dicas essenciais de acessibilidade em JavaScript, com exemplos claros que garantem inclusão e usabilidade total em sua aplicação web..

Conclusão🔗

Com React.js, criar Single Page Applications torna-se um processo fluido e modular. A combinação de componentesTags e Elementos: Sintaxe e HierarquiaTags e Elementos: Sintaxe e HierarquiaDescubra os fundamentos do HTML: aprenda sobre tags, elementos, hierarquia e boas práticas para criar páginas bem estruturadas e acessíveis. funcionais, Hooks e React Router viabiliza interfaces modernas de forma simples e eficiente. Lembre-se de:

A partir desses pilares, você terá a base sólida para construir aplicações complexas e escaláveis. Boas práticasCobertura de Testes e Práticas de QualidadeCobertura de Testes e Práticas de QualidadeDescubra como a cobertura de testes assegura qualidade e confiabilidade em projetos JavaScript. Aprenda a aplicar métricas e ferramentas essenciais. de organização, testes e otimização complementam o tema, garantindo qualidade e facilidade de manutenção ao projeto.

Pronto! Agora você conhece os conceitos fundamentais de SPAs em React.js e está preparado para aprofundar cada vez mais nas possibilidades fantásticas desse ecossistema.

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo