Pular para o conteúdo
RoboStageDOCS

/ Referência

Contextos React e hooks

Estado compartilhado e hooks reutilizáveis.

3 min de leitura Editar no GitHub

Esta página documenta os contextos React e hooks reutilizáveis do RoboStage, responsáveis por compartilhar estado, encapsular operações de dados e centralizar cálculos utilizados pela interface.

As regras de negócio compartilhadas entre diferentes funcionalidades estão documentadas em Utilitários e regras de negócio.

1. Contexto de notificações

Arquivo: app/context/ToastContext.tsx

O ToastProvider disponibiliza um sistema de notificações temporárias para os componentes da aplicação. O hook useToast permite acessar as operações de notificação dentro do contexto.

O hook deve ser utilizado dentro de um ToastProvider. Caso contrário, um erro é lançado para indicar que o contexto não foi configurado corretamente.

Recursos

  • Adicionar uma notificação.
  • Remover uma notificação específica.
  • Limpar todas as notificações.
  • Expirar notificações automaticamente.
  • Gerenciar referências de timeout para evitar temporizadores pendentes após a remoção dos toasts.

Integração

O ToastProvider deve envolver a parte da árvore React que precisa acessar as notificações. Os componentes descendentes podem utilizar useToast para acionar as operações disponíveis.

2. Hooks de dados e testes

Arquivo: hooks/useLabTests.ts

Os hooks deste módulo encapsulam operações de consulta e persistência relacionadas aos testes do LabTest, reduzindo a necessidade de implementar a mesma lógica diretamente nas páginas e nos componentes.

Hook Responsabilidade
useTests Lista os testes do usuário autenticado.
useTest(testId) Carrega um teste, seus campos e suas execuções.
useCreateTest Cria um teste e seus campos.
useSaveEntries(testId) Salva um lote de execuções.
useMissionCatalog(season) Carrega o catálogo de missões de uma temporada.

Tratamento de estados

Os hooks expõem estados de carregamento e erro para permitir que a interface apresente feedback adequado durante as consultas e operações.

As operações persistentes utilizam as rotas da aplicação documentadas em Referência de APIs.

3. Hook de cálculo de pontuação

Arquivo: hooks/useScoreCalculator.ts

O hook useScoreCalculator(data) mantém os valores das missões e das penalidades e calcula os resultados utilizados no placar.

Resultados calculados

  • Pontuação individual de cada missão.
  • Soma da pontuação das missões.
  • Faixa de penalidade aplicável.
  • Pontuação final.

O hook utiliza useMemo para evitar recalcular os resultados quando os dados de entrada não mudam.

4. Hook do mapa de calor

Arquivo: hooks/useHeatmap.ts

O hook useHeatmap() gerencia os pontos, as configurações e o histórico de alterações do mapa de calor.

Operações disponíveis

Operação Descrição
addPoint(x, y) Adiciona um ponto às coordenadas informadas.
removeNearest(x, y) Remove o ponto mais próximo das coordenadas informadas.
deleteById(id) Remove um ponto pelo identificador.
clear() Limpa os pontos do mapa.
undo() Desfaz uma alteração anterior.
setMode(mode) Atualiza o modo de operação.
setSeason(season) Define a temporada utilizada.
setConfig(patch) Atualiza as configurações a partir de um conjunto parcial de alterações.

Histórico de alterações

O hook mantém um histórico interno que permite desfazer alterações sem exigir que a página conheça os detalhes de implementação do reducer.

Essa separação concentra o gerenciamento do estado no hook e simplifica sua integração com os componentes da interface.

5. Organização do código

A lógica reutilizável está distribuída entre diretórios com responsabilidades distintas.

Diretório Responsabilidade
app/ Rotas, layouts, ações e componentes específicos das páginas.
app/context/ Contextos React compartilhados pela aplicação.
hooks/ Hooks reutilizáveis para gerenciamento de estado, dados e cálculos.
types/ Tipos compartilhados entre módulos.
utils/ Regras de negócio e funções reutilizáveis organizadas por domínio.

6. Documentação relacionada

Algo errado ou faltando nesta página? Sugira uma edição.