Introdução ao React | [SIS]ANO2C3B2S8A1
[ SIS ] ANO2C3B2S8A1·Unidade 2 · Componente 3 · Semana 8·Ensino Médio Técnico — Desenvolvimento de Sistemas

Entenda por que React domina o desenvolvimento front-end moderno — e como componentes, props, state e JSX formam a estrutura fundamental de qualquer interface profissional.

ReactJavaScript ComponentesJSX SEDUC-SP

Por que React se tornou o padrão do mercado front-end em menos de uma década?

Em 2013, o Facebook lançou o React como resposta a um problema concreto: interfaces complexas com dezenas de componentes interdependentes que tornavam a manutenção de código um pesadelo. A solução foi radical — em vez de manipular o DOM diretamente, React introduziu o conceito de Virtual DOM e uma arquitetura baseada em componentes reutilizáveis. Dez anos depois, React é usado por Netflix, Airbnb, Instagram, WhatsApp Web e mais de 40% das aplicações front-end em produção no mundo.

A pergunta para o estudante de desenvolvimento de sistemas não é mais “devo aprender React?” — é “quão profundamente preciso entender seus fundamentos para ser competitivo no mercado?” Esta aula responde: é preciso dominar componentes, props, state e JSX. Tudo o mais em React deriva dessas quatro abstrações.

Custo concreto de pular os fundamentos: desenvolvedores que pulam para frameworks (Next.js, Remix) sem solidificar React puro criam código com efeitos colaterais imprevisíveis, re-renders desnecessários e estado mal gerenciado. Em entrevistas técnicas, os fundamentos são invariavelmente a primeira triagem.

Como ensinar React no ensino médio técnico com infraestrutura limitada?

A aula [SIS]ANO2C3B2S8A1 resolve um desafio pedagógico real: React exige Node.js, npm e um bundler (Vite ou Create React App) para funcionar. Em laboratórios de escola pública, a instalação dessas ferramentas pode consumir toda a aula disponível. A estratégia da SEDUC-SP é precisa — apresentar os conceitos com código limpo e contextualizado, usando o laboratório de informática com ambiente já configurado ou alternativas online como StackBlitz e CodeSandbox, que rodam React diretamente no navegador sem instalação.

≡ definição · componente React

Bloco reutilizável que encapsula lógica e layout de uma parte da interface. Pode ser funcional (função que retorna JSX) ou de classe (ES6). Componentes funcionais com hooks são o padrão atual da indústria.

≡ definição · jsx

JavaScript XML — sintaxe que permite escrever elementos React usando uma notação similar ao HTML, mas diretamente dentro de arquivos JavaScript. O Babel transpila JSX para React.createElement() durante o build.

Quais são as diferenças fundamentais entre props e state?

DIMENSÃOPROPSSTATE
MutabilidadeImutável — o componente não pode alterar suas próprias propsMutável — alterado via função setter (useState)
OrigemPassado pelo componente pai — fluxo de dados de cima para baixoGerenciado internamente pelo próprio componente
Uso típicoConfigurar aparência e comportamento — label de botão, cor, dados de exibiçãoDados dinâmicos — contadores, conteúdo de formulários, estado de animações
Re-renderMudança nas props do pai re-renderiza o componente filhoToda chamada ao setter dispara re-render do componente
AnalogiaParâmetros de uma função — configuram sem alterarVariável local com efeito colateral visual

Componentes funcionais vs. componentes de classe

padrão atual · preferido

Componente Funcional

Função JavaScript que retorna JSX. Com hooks (useState, useEffect), tem todo o poder dos componentes de classe com menos código e maior legibilidade. É o padrão desde React 16.8.

legado · ainda suportado

Componente de Classe

Baseado em classes ES6 com método render(). Estado gerenciado via this.setState(). Ainda encontrado em bases de código antigas (legacy). Novos projetos não devem usar.

Como implementar props e state em React na prática?

Template 1 — Props: componente Button reutilizável

Button.jsx — props em ação
import React from 'react';

// Componente Button — recebe 'label' como prop (imutável)
function Button({ label }) {
  return (
    <button>
      {label}
    </button>
  );
}

// Componente App — passa diferentes props para o mesmo componente
function App() {
  return (
    <div>
      <Button label="Clique Aqui" />
      <Button label="Enviar" />
      <Button label="Cancelar" />
    </div>
  );
}

export default App;

Template 2 — State: contador com useState hook

Counter.jsx — state com useState
import React, { useState } from 'react';

function Counter() {
  // useState(0): valor inicial. Retorna [valorAtual, funcaoSetter]
  const [count, setCount] = useState(0);

  // Toda chamada ao setter dispara re-render do componente
  const increment = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <p>Você clicou {count} vezes</p>
      <button onClick={increment}>
        Clique para incrementar
      </button>
    </div>
  );
}

export default Counter;
JSX em uma linha: const element = <h1>Hello, world!</h1>; — isso não é uma string HTML. É JSX que será transpilado pelo Babel para React.createElement('h1', null, 'Hello, world!'). O Virtual DOM usa essa estrutura para calcular o menor conjunto de mudanças necessárias no DOM real.

Como esse conhecimento aparece em um cenário profissional real?

! caso real · Ser sempre+ — TechStore: React na intersecção entre dev, design e marketing

O desenvolvedor como mediador técnico

A TechStore está lançando um catálogo de produtos eletrônicos. A equipe de marketing quer conversão — botões grandes, filtros rápidos, estado persistido. Os designers querem estética — componentes polidos, animações fluidas. Você, como dev React, percebe que componentes bem estruturados com props claras são justamente o contrato que une as duas visões.

  • Props como contrato: o componente ProductCard com props como name, price, onAddToCart define o que cada time pode personalizar sem quebrar a estrutura.
  • State como comportamento: o estado de “adicionado ao carrinho” é gerenciado internamente — o designer não precisa saber como funciona, o marketing recebe o comportamento esperado.
  • Mediação técnica: a habilidade de traduzir necessidades de negócio em props e comportamentos de UI em state é o diferencial de um desenvolvedor front-end sênior.
→ expansão estratégica · 4 frentes

De aula de React a ativo pedagógico e profissional

{ }Curso Técnico

Evoluir o Counter para um carrinho de compras completo com useState. Conectar com a próxima semana (ciclo de vida, useEffect) para buscar produtos de uma API real.

Blog / Autoridade

Série “React do zero ao mercado” — artigos curtos com exemplos contextualizados para o mercado de SP: de componentes simples a dashboards reais.

[ ]Cultura Maker

Projeto integrado: alunos constroem uma interface React para o próprio lab de informática — catálogo de equipamentos, painel de chamados, agenda de uso.

>_Formação Docente

Oficina: como ensinar React sem Node.js instalado — usando StackBlitz e CodeSandbox para acesso imediato em qualquer laboratório escolar.

Síntese: componentes são a base da construção de interfaces no React. Props e state controlam personalização e comportamento dinâmico. JSX simplifica a criação de elementos com uma sintaxe familiar. Esses três pilares se combinam em todo projeto React — do mais simples ao mais complexo.

Perguntas frequentes sobre React para iniciantes

O que são componentes no React?
Componentes são blocos reutilizáveis que encapsulam lógica e layout de uma parte da interface. Podem ser funcionais (funções que retornam JSX) ou de classe (ES6). Componentes funcionais com hooks são o padrão da indústria desde React 16.8.
Qual a diferença entre props e state no React?
Props são argumentos imutáveis passados pelo componente pai — configuram aparência e comportamento. State é um objeto mutável gerenciado internamente pelo componente — ideal para dados que mudam ao longo do tempo como contadores e formulários.
O que é JSX no React?
JSX é uma sintaxe que permite escrever elementos React usando uma notação similar ao HTML, mas diretamente em JavaScript. O Babel transpila JSX para chamadas React.createElement() durante o build — não é HTML, é JavaScript disfarçado.
Por que usar componentes funcionais em vez de componentes de classe?
Componentes funcionais com hooks são mais simples, com menos boilerplate, mais fáceis de testar e lidos com mais clareza. Desde React 16.8, hooks tornam desnecessário o uso de classes para gerenciar estado em novos projetos.
O que é o hook useState e como ele funciona?
useState é um hook que adiciona estado local a componentes funcionais. Recebe o valor inicial e retorna um array com o valor atual e a função setter: const [count, setCount] = useState(0). Toda chamada ao setter re-renderiza o componente com o novo valor.

Acesse todos os materiais do Curso Técnico

Slides, roteiros, projetos React e reflexões sobre ensino de tecnologia na escola pública.

→ professorcomia.com.br

React como mentalidade de composição, não como sintaxe

Aprender React não é memorizar a API do framework — é internalizar uma forma diferente de pensar interfaces: como composição de peças independentes, cada uma com responsabilidade única e fluxo de dados previsível. O desenvolvedor que compreende props como contratos imutáveis e state como fonte única de verdade está pronto para qualquer framework — Vue, Angular, Svelte — porque entendeu o princípio, não a ferramenta.

// código da aula: [SIS]ANO2C3B2S8A1 · unidade 2 · componente 3 · semana 8
// introdução ao react · frameworks e bibliotecas javascript · seduc-sp
// publicado em: professorcomia.com.br · diariodeumpoed.com.br · poed · 2024

>_ slides da aula

[SIS]ANO2C3B2S8A1 · introdução ao react · 2º ano · semana 8 · aula 1

slide 01
abertura

>_ Frameworks e Bibliotecas JavaScript — Aula 1

FREQUÊNCIA — registre sua presença no AVA antes de iniciar
  • Código: [SIS]ANO2C3B2S8A1 — Unidade 2 · Componente 3 · Semana 8
  • Tema: Frameworks e bibliotecas JavaScript — Aula 1: Introdução ao React
  • Próximas semanas: semana 9 (estilização) → semana 11 (testes) → semana 12 (performance) → semana 14 (PWA)
? pergunta provocadora — antes de qualquer slide Você já usou um app que atualiza a tela em tempo real sem recarregar a página — feed do Instagram, chat, carrinho de compras? Quem você acha que está atualizando o DOM tão rápido? O JavaScript puro aguenta isso?
slide 02
objetivos

[ ] O que vamos construir hoje

conceitual

Compreender e utilizar os conceitos básicos do React — componentes, props, state e JSX — como fundamentos de toda interface moderna.

procedimental

Implementar e gerenciar estados e eventos no React usando o hook useState e passagem de props entre componentes pai e filho.

atitudinal

Desenvolver curiosidade ao explorar novas tecnologias front-end — questionar por que React existe e que problema real ele resolve.

≡ recursos · laboratório de informática · caderno · recurso audiovisual · 50 minutos
slide 03
problema_gerador

! Por que HTML + JavaScript puro não escala?

sem React — DOM puro

Com 50 componentes de produto na tela, cada document.getElementById atualiza o DOM diretamente. Uma mudança de preço exige rerenderizar toda a lista. O navegador precalcota tudo do zero — performance catastrófica.

com React — Virtual DOM

React mantém uma cópia virtual do DOM. Quando o state muda, calcula a diferença (diffing) e atualiza apenas os nós que mudaram. Com 50 produtos, apenas o preço alterado é tocado no DOM real.

? 5 minutos — no caderno Pense no feed do Instagram. A cada novo post, a página inteira recarrega? O que você observa? Como você acha que React resolve isso sem recarregar nada?
slide 04
conceito · relembre

{ } Componentes do React

  • Definição: blocos reutilizáveis que encapsulam lógica e layout de uma parte da interface — cada componente tem responsabilidade única
  • Componentes funcionais: funções que recebem props e retornam elementos JSX — mais simples, sem estado próprio por padrão
  • Componentes de classe: baseados em ES6, mantêm estado internamente — ainda encontrados em código legado
  • Padrão atual: componentes funcionais + hooks são preferidos desde React 16.8 — todo projeto novo usa essa abordagem
01

Se um componente de botão existe em 30 lugares no app e precisa mudar de cor, você altera em 30 lugares ou em 1? Qual o risco de alterar em 30 lugares manualmente?

02

Por que a documentação oficial do React afirma que componentes de classe são “legado mas suportados”? O que isso significa para quem está aprendendo agora?

slide 05
conceito

Props — argumentos imutáveis dos componentes

  • Definição: argumentos passados do componente pai para o filho — configuram aparência e comportamento sem alterar a estrutura interna
  • Imutabilidade: um componente nunca deve alterar suas próprias props — se precisar de dados mutáveis, use state
  • Exemplo: Button com prop label — o mesmo componente renderiza “Enviar”, “Cancelar” e “Clique Aqui” sem código duplicado
Button.jsx — props em ação
function Button({ label }) {
  return <button>{label}</button>;
}
// Mesmo componente, prop diferente — sem código duplicado
<Button label="Enviar" />
<Button label="Cancelar" />
01

Se props são imutáveis, o que acontece se você tentar fazer props.label = "novo texto" dentro do componente? React permite? O que você esperaria que acontecesse?

slide 06
conceito

State — a memória dinâmica do componente

  • Definição: objeto mutável gerenciado internamente — armazena dados que mudam ao longo do tempo e disparam re-render quando alterados
  • useState hook: const [count, setCount] = useState(0) — desestrutura valor atual + função setter
  • Regra crítica: nunca altere o state diretamente (count = 5 não funciona) — sempre use o setter (setCount(5))
Counter.jsx — useState
const [count, setCount] = useState(0);
const increment = () => setCount(count + 1);
// Ao clicar: React detecta mudança → re-render automático
<button onClick={increment}>cliques: {count}</button>
01

Se você fizer count = count + 1 em vez de setCount(count + 1), o número na tela muda? O que o React não consegue detectar quando você altera o state diretamente?

02

Cada componente Counter tem seu próprio state. Se você renderizar <Counter /><Counter />, os dois contadores compartilham o mesmo número? Como você testaria isso?

slide 07
conceito

# JSX — JavaScript que parece HTML

  • Definição: sintaxe que permite escrever elementos React com notação HTML diretamente em JavaScript — transpilada pelo Babel
  • Não é HTML: class vira className, eventos são onClick e não onclick, todo elemento deve ser fechado
  • JavaScript dentro do JSX: chaves {} executam expressões JS — <p>{count}</p>, <p>{2 + 2}</p>, <p>{nome.toUpperCase()}</p>
  • Um elemento raiz: todo retorno JSX deve ter um único elemento pai — use <div> ou fragmento <></>
01

JSX é transpilado para React.createElement('h1', null, 'Hello'). Por que React precisa de uma etapa de transpilação? O navegador entende JSX nativamente?

02

Se você esquecer de fechar uma tag (<input> em vez de <input />), o que acontece? JSX é mais rigoroso ou mais permissivo que HTML? Por quê isso é bom?

slide 08
caderno

Glossário — Introdução ao React

  • Componente bloco reutilizável que encapsula lógica e layout de uma parte da interface
  • Props argumentos imutáveis passados do pai para o filho — configuram sem alterar
  • State objeto mutável gerenciado internamente — toda mudança dispara re-render
  • useState hook que adiciona estado a componentes funcionais — retorna [valor, setter]
  • JSX sintaxe HTML-like dentro de JavaScript — transpilada pelo Babel para React.createElement()
  • Virtual DOM cópia do DOM em memória — React calcula diferenças e atualiza só o necessário
  • Hook função especial do React que adiciona funcionalidades (estado, efeitos) a componentes funcionais
? escreva no caderno antes de avançar
  • Qual a diferença fundamental entre props e state? Dê um exemplo do seu cotidiano para cada um.
  • Por que você nunca deve alterar state diretamente (count = 5)? O que o React perde com isso?
slide 09
aplicacao_conceitual · ser sempre+

{ } TechStore — React na intersecção entre dev, design e marketing

cenário profissional

A TechStore está construindo um catálogo de produtos eletrônicos em React. Você está na equipe de desenvolvimento, mediando as demandas de marketing (conversão, filtros rápidos) e dos designers (estética, animações) — que têm visões conflitantes sobre o mesmo componente ProductCard.

⌨ sua tarefa — 15 minutos · responda no caderno Projete o componente ProductCard para React. Responda: (1) Quais dados seriam props? (2) Quais dados seriam state? (3) Como a separação props/state resolve o conflito entre marketing e design? (4) Que prop você criaria para que marketing controle o botão de compra sem alterar o código do componente?
01

Marketing quer um botão “COMPRE JÁ” e design quer “Adicionar”. Como você resolve isso com uma prop sem criar dois componentes separados?

02

Quando o usuário adiciona ao carrinho, o número do badge muda. Esse número é state do ProductCard ou de um componente pai? Por quê a localização do state importa?

slide 10
atividade_avaliativa

Atividade — Projetando componentes React

enunciado

Com base nos conceitos estudados (componentes, props, state e JSX), elabore uma análise técnica escrita sobre como você estruturaria os componentes React da plataforma TechStore — identificando quais dados são props, quais são state e como a escolha impacta manutenção e colaboração entre equipes.

obrigatório incluir
  • Definição com suas próprias palavras de componente, props e state
  • Listagem de pelo menos 3 props e 2 states do ProductCard
  • Justificativa técnica para cada escolha (por que prop? por que state?)
  • Esboço JSX mínimo do componente com pelo menos 1 prop e 1 state
critérios de avaliação
  • Precisão conceitual nas definições
  • Coerência entre escolha de props vs. state
  • Clareza e organização da resposta
  • Conexão com o cenário profissional proposto
⌨ entrega · resposta escrita no AVA · prazo: conforme calendário da turma
slide 11
síntese

Então ficamos assim…

{ }Componentes

São a base da construção de interfaces no React, encapsulando lógica e visual em blocos reutilizáveis com responsabilidade única.

Props e State

Props e state permitem controlar personalização (imutável, vinda de fora) e comportamento dinâmico (mutável, gerenciado internamente) dos componentes.

#JSX

JSX simplifica a criação de elementos React usando uma sintaxe familiar aos desenvolvedores web — HTML-like dentro de JavaScript, transpilado pelo Babel.

← aula anterior

Linguagens de programação front-end — JavaScript moderno como base para frameworks e bibliotecas de interface.

→ próxima aula

Ciclo de vida dos componentes e hooks avançados (useEffect) — buscar dados de APIs, efeitos colaterais e gerenciamento de dependências.