Pular para o conteúdo
Skillpedia
Sites e telas (frontend)48 mil · #3968

react-state-management

Faz seu agente gerenciar o estado de aplicações React de forma avançada. Ele usa ferramentas como Redux Toolkit ou Zustand para organizar dados e melhorar o desempenho.

O que ela faz

Esta ferramenta ajuda a organizar e gerenciar informações importantes dentro de um aplicativo feito com a tecnologia React. Ela oferece diferentes maneiras de guardar e acessar dados, como informações do usuário ou dados de um servidor.

Quando usar

  • ✓Ao criar um aplicativo React que precisa compartilhar dados entre várias partes.
  • ✓Ao decidir qual a melhor forma de guardar dados que vêm de um servidor.
  • ✓Ao tentar resolver problemas onde os dados do aplicativo não estão sendo exibidos corretamente.

Exemplo do que pedir para a IA

“Como posso organizar os dados do meu aplicativo React para que diferentes partes possam usá-los facilmente?”

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/react-state-management/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/react-state-management/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela compara diferentes métodos (como Redux Toolkit, Zustand, Jotai, React Query) e mostra exemplos de como configurá-los. Você pode escolher a ferramenta que melhor se adapta ao tamanho e complexidade do seu projeto.

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 react-state-management

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/react-state-management/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.

Gerenciamento de Estado no React

Guia completo de padrões modernos de gerenciamento de estado no React, desde o estado local do componente até stores globais e sincronização de estado do servidor.

Não use esta habilidade quando

  • A tarefa não estiver relacionada ao gerenciamento de estado do React
  • Você precisar de um domínio ou ferramenta diferente fora deste escopo

Instruções

  • Clarifique objetivos, restrições e entradas necessárias.
  • Aplique as melhores práticas relevantes e valide os resultados.
  • Forneça etapas acionáveis e verificação.

Use esta habilidade quando

  • Configurando o gerenciamento de estado global em um aplicativo React
  • Escolhendo entre Redux Toolkit, Zustand ou Jotai
  • Gerenciando estado do servidor com React Query ou SWR
  • Implementando atualizações otimistas
  • Depurando problemas relacionados ao estado
  • Migrando do Redux legado para padrões modernos

Conceitos Principais

1. Categorias de Estado

Tipo Descrição Soluções
Estado Local Específico do componente, estado da UI useState, useReducer
Estado Global Compartilhado entre componentes Redux Toolkit, Zustand, Jotai
Estado do Servidor Dados remotos, cache React Query, SWR, RTK Query
Estado da URL Parâmetros de rota, busca React Router, nuqs
Estado do Formulário Valores de entrada, validação React Hook Form, Formik

2. Critérios de Seleção

Small app, simple state → Zustand or Jotai
Large app, complex state → Redux Toolkit
Heavy server interaction → React Query + light client state
Atomic/granular updates → Jotai

Início Rápido

Zustand (Mais Simples)

// store/useStore.ts
import { create } from 'zustand'
import { devtools, persist } from 'zustand/middleware'

interface AppState {
  user: User | null
  theme: 'light' | 'dark'
  setUser: (user: User | null) => void
  toggleTheme: () => void
}

export const useStore = create<AppState>()(
  devtools(
    persist(
      (set) => ({
        user: null,
        theme: 'light',
        setUser: (user) => set({ user }),
        toggleTheme: () => set((state) => ({
          theme: state.theme === 'light' ? 'dark' : 'light'
        })),
      }),
      { name: 'app-storage' }
    )
  )
)

// Usage in component
function Header() {
  const { user, theme, toggleTheme } = useStore()
  return (
    <header className={theme}>
      {user?.name}
      <button onClick={toggleTheme}>Toggle Theme</button>
    </header>
  )
}

Padrões

Padrão 1: Redux Toolkit com TypeScript

// store/index.ts
import { configureStore } from '@reduxjs/toolkit'
import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'
import userReducer from './slices/userSlice'
import cartReducer from './slices/cartSlice'

export const store = configureStore({
  reducer: {
    user: userReducer,
    cart: cartReducer,
  },
  middleware: (getDefaultMiddleware) =>
    getDefaultMiddleware({
      serializableCheck: {
        ignoredActions: ['persist/PERSIST'],
      },
    }),
})

export type RootState = ReturnType<typeof store.getState>
export type AppDispatch = typeof store.dispatch

// Typed hooks
export const useAppDispatch: () => AppDispatch = useDispatch
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector
// store/slices/userSlice.ts
import { createSlice, createAsyncThunk, PayloadAction } from '@reduxjs/toolkit'

interface User {
  id: string
  email: string
  name: string
}

interface UserState {
  current: User | null
  status: 'idle' | 'loading' | 'succeeded' | 'failed'
  error: string | null
}

const initialState: UserState = {
  current: null,
  status: 'idle',
  error: null,
}

export const fetchUser = createAsyncThunk(
  'user/fetchUser',
  async (userId: string, { rejectWithValue }) => {
    try {
      const response = await fetch(`/api/users/${userId}`)
      if (!response.ok) throw new Error('Falha ao buscar usuário')
      return await response.json()
    } catch (error) {
      return rejectWithValue((error as Error).message)
    }
  }
)

const userSlice = createSlice({
  name: 'user',
  initialState,
  reducers: {
    setUser: (state, action: PayloadAction<User>) => {
      state.current = action.payload
      state.status = 'succeeded'
    },
    clearUser: (state) => {
      state.current = null
      state.status = 'idle'
    },
  },
  extraReducers: (builder) => {
    builder
      .addCase(fetchUser.pending, (state) => {
        state.status = 'loading'
        state.error = null
      })
      .addCase(fetchUser.fulfilled, (state, action) => {

…
Perguntas frequentes

Qual a diferença entre estado local e global?

Estado local é específico de um único componente (como um botão que muda de cor), enquanto estado global é compartilhado por muitos componentes (como o tema claro/escuro do aplicativo).

Quando devo usar React Query?

React Query é ideal quando você precisa buscar, armazenar em cache e sincronizar dados que vêm de um servidor, tornando a experiência do usuário mais rápida.

Qual a ferramenta mais simples para começar?

Zustand é frequentemente recomendado como uma opção mais simples para gerenciar o estado global em comparação com outras ferramentas.

Detalhes

Descrição original do autor

Master modern React state management with Redux Toolkit, Zustand, Jotai, and React Query. Use when setting up global state, managing server state, or choosing between state management solutions.

repo: sickn33/agentic-awesome-skills

Popularidade

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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas