Pular para o conteúdo
Skillpedia
Interfaces (UI/UX)48 mil · #2579

code-showcase-react-ui-patterns

Faz seu agente usar padrões modernos de React para interfaces. Ele ajuda a lidar com carregamento, erros e dados, tornando as interfaces mais fáceis de usar.

O que ela faz

Esta ferramenta ajuda a criar interfaces de usuário (telas) modernas em React. Ela ensina como mostrar mensagens de 'carregando', 'erro' ou 'vazio' de forma inteligente, para que o usuário sempre saiba o que está acontecendo.

Quando usar

  • ✓Ao criar uma nova tela ou componente.
  • ✓Quando dados precisam ser carregados da internet.
  • ✓Para garantir que o usuário veja mensagens claras de erro ou sucesso.

Exemplo do que pedir para a IA

“Como posso mostrar uma mensagem de 'carregando' apenas quando não há dados?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/code-showcase-react-ui-patterns/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/code-showcase-react-ui-patterns/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela usa regras simples para decidir o que mostrar: primeiro verifica se há erro, depois se está carregando sem dados, e por fim se há dados para exibir. Isso evita que a tela pisque ou confunda o usuário.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill code-showcase-react-ui-patterns

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/code-showcase-react-ui-patterns/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Padrões de UI em React

Quando Usar

Use esta habilidade quando precisar de padrões modernos de UI em React para estados de carregamento, tratamento de erros e busca de dados. Use ao construir componentes de UI, lidar com dados assíncronos ou gerenciar estados de UI.

Princípios Fundamentais

  1. Nunca mostre UI desatualizada - Indicadores de carregamento apenas quando estiver realmente carregando
  2. Sempre exiba erros - Os usuários precisam saber quando algo falha
  3. Atualizações otimistas - Faça a UI parecer instantânea
  4. Divulgação progressiva - Mostre o conteúdo à medida que ele se torna disponível
  5. Degradação graciosa - Dados parciais são melhores do que nenhum dado

Padrões de Estado de Carregamento

A Regra de Ouro

Mostre o indicador de carregamento APENAS quando não houver dados para exibir.

// CORRECT - Only show loading when no data exists
const { data, loading, error } = useGetItemsQuery();

if (error) return <ErrorState error={error} onRetry={refetch} />;
if (loading && !data) return <LoadingState />;
if (!data?.items.length) return <EmptyState />;

return <ItemList items={data.items} />;
// WRONG - Shows spinner even when we have cached data
if (loading) return <LoadingState />; // Flashes on refetch!

Árvore de Decisão de Estado de Carregamento

Is there an error?
  → Yes: Show error state with retry option
  → No: Continue

Is it loading AND we have no data?
  → Yes: Show loading indicator (spinner/skeleton)
  → No: Continue

Do we have data?
  → Yes, with items: Show the data
  → Yes, but empty: Show empty state
  → No: Show loading (fallback)

Esqueleto vs. Spinner

Use Esqueleto Quando Use Spinner Quando
Formato de conteúdo conhecido Formato de conteúdo desconhecido
Layouts de lista/cartão Ações de modal
Carregamento inicial da página Submissões de botão
Marcadores de posição de conteúdo Operações em linha

Padrões de Tratamento de Erros

Hierarquia de Tratamento de Erros

1. Inline error (field-level) → Form validation errors
2. Toast notification → Recoverable errors, user can retry
3. Error banner → Page-level errors, data still partially usable
4. Full error screen → Unrecoverable, needs user action

Sempre Mostre Erros

CRÍTICO: Nunca ignore erros silenciosamente.

// CORRECT - Error always surfaced to user
const [createItem, { loading }] = useCreateItemMutation({
  onCompleted: () => {
    toast.success({ title: 'Item created' });
  },
  onError: (error) => {
    console.error('createItem failed:', error);
    toast.error({ title: 'Failed to create item' });
  },
});

// WRONG - Error silently caught, user has no idea
const [createItem] = useCreateItemMutation({
  onError: (error) => {
    console.error(error); // User sees nothing!
  },
});

Padrão de Componente de Estado de Erro

interface ErrorStateProps {
  error: Error;
  onRetry?: () => void;
  title?: string;
}

const ErrorState = ({ error, onRetry, title }: ErrorStateProps) => (
  <div className="error-state">
    <Icon name="exclamation-circle" />
    <h3>{title ?? 'Something went wrong'}</h3>
    <p>{error.message}</p>
    {onRetry && (
      <Button onClick={onRetry}>Try Again</Button>
    )}
  </div>
);

Padrões de Estado de Botão

Estado de Carregamento do Botão

<Button
  onClick={handleSubmit}
  isLoading={isSubmitting}
  disabled={!isValid || isSubmitting}
>
  Submit
</Button>

Desabilite Durante Operações

CRÍTICO: Sempre desabilite gatilhos durante operações assíncronas.

// CORRECT - Button disabled while loading
<Button
  disabled={isSubmitting}
  isLoading={isSubmitting}
  onClick={handleSubmit}
>
  Submit
</Button>

// WRONG - User can tap multiple times
<Button onClick={handleSubmit}>
  {isSubmitting ? 'Submitting...' : 'Submit'}
</Button>

Estados Vazios

Requisitos de Estado Vazio

Toda lista/coleção DEVE ter um estado vazio:

// WRONG - No empty state
return <FlatList data={items} />;

// CORRECT - Explicit empty state
return (
  <FlatList
    data={items}
    ListEmptyComponent={<EmptyState />}
  />
);

Estados Vazios Contextuais

// Search with no results
<EmptyState
  icon="search"
  title="No results found"
  description="Try different search terms"
/>

// List with no items yet
<EmptyState
  icon="plus-circle"
  title="No items yet"
  description="Create your first item"
  action={{ label: 'Create Item', onClick: handleCreate }}
/>

Padrão de Submissão de Formulário

const MyForm = () => {
  const [submit, { loading }] = useSubmitMutation({
    onCompleted: handleSuccess,
    onError: handleError,
  });


…
Perguntas frequentes

O que é um 'estado de carregamento'?

É o que o usuário vê enquanto a informação está sendo buscada, como um círculo girando ou uma área cinza que imita o conteúdo.

Por que é importante mostrar erros?

Para que o usuário saiba que algo deu errado e possa tentar novamente ou entender o problema.

O que são 'atualizações otimistas'?

É quando a interface finge que a ação do usuário já foi concluída (mesmo antes da confirmação do servidor) para dar uma sensação de rapidez.

Detalhes

Descrição original do autor

Modern React UI patterns for loading states, error handling, and data fetching. Use when building UI components, handling async data, or managing UI states.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#2579
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas