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

react-modernization

Ajuda seu agente a atualizar aplicações React para as versões mais recentes. Ele pode migrar componentes antigos para novos padrões.

O que ela faz

Esta ferramenta ajuda a atualizar seu código de programação React para as versões mais recentes. Ela também pode transformar componentes antigos em um formato mais moderno chamado 'hooks' e adaptar seu código para usar recursos mais novos do React.

Quando usar

  • ✓Quando você precisa atualizar seu projeto React para uma versão mais nova.
  • ✓Ao converter componentes antigos (classes) para o formato moderno (hooks).
  • ✓Para usar as novas funcionalidades do React, como 'concurrent features'.

Exemplo do que pedir para a IA

“Atualize este código React para a versão mais recente e use hooks.”

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/wshobson/agents/blob/main/plugins/framework-migration/skills/react-modernization/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/wshobson/agents/blob/main/plugins/framework-migration/skills/react-modernization/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta analisa seu código React e aplica automaticamente as mudanças necessárias para as novas versões ou para o formato de hooks. Ela usa 'codemods', que são como scripts de automação para refatorar código.

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 wshobson/agents --skill react-modernization

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/framework-migration/skills/react-modernization/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.

Modernização do React

Domine atualizações de versão do React, migração de classes para hooks, adoção de recursos concorrentes e codemods para transformação automatizada.

Quando Usar Esta Habilidade

  • Atualizar aplicações React para as versões mais recentes
  • Migrar componentes de classe para componentes funcionais com hooks
  • Adotar recursos concorrentes do React (Suspense, transições)
  • Aplicar codemods para refatoração automatizada
  • Modernizar padrões de gerenciamento de estado
  • Atualizar para TypeScript
  • Melhorar o desempenho com recursos do React 18+

Caminho de Atualização de Versão

React 16 → 17 → 18

Mudanças Quebrando por Versão:

React 17:

  • Mudanças na delegação de eventos
  • Sem pooling de eventos
  • Tempo de limpeza de efeitos
  • Transformação JSX (não precisa importar React)

React 18:

  • Agrupamento automático (automatic batching)
  • Renderização concorrente
  • Mudanças no Strict Mode (invocação dupla)
  • Nova API de root
  • Suspense no servidor

Migração de Classes para Hooks

Gerenciamento de Estado

// Before: Class component
class Counter extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 0,
      name: "",
    };
  }

  increment = () => {
    this.setState({ count: this.state.count + 1 });
  };

  render() {
    return (
      <div>
        <p>Count: {this.state.count}</p>
        <button onClick={this.increment}>Increment</button>
      </div>
    );
  }
}

// After: Functional component with hooks
function Counter() {
  const [count, setCount] = useState(0);
  const [name, setName] = useState("");

  const increment = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
}

Métodos de Ciclo de Vida para Hooks

// Before: Lifecycle methods
class DataFetcher extends React.Component {
  state = { data: null, loading: true };

  componentDidMount() {
    this.fetchData();
  }

  componentDidUpdate(prevProps) {
    if (prevProps.id !== this.props.id) {
      this.fetchData();
    }
  }

  componentWillUnmount() {
    this.cancelRequest();
  }

  fetchData = async () => {
    const data = await fetch(`/api/${this.props.id}`);
    this.setState({ data, loading: false });
  };

  cancelRequest = () => {
    // Cleanup
  };

  render() {
    if (this.state.loading) return <div>Loading...</div>;
    return <div>{this.state.data}</div>;
  }
}

// After: useEffect hook
function DataFetcher({ id }) {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    let cancelled = false;

    const fetchData = async () => {
      try {
        const response = await fetch(`/api/${id}`);
        const result = await response.json();

        if (!cancelled) {
          setData(result);
          setLoading(false);
        }
      } catch (error) {
        if (!cancelled) {
          console.error(error);
        }
      }
    };

    fetchData();

    // Cleanup function
    return () => {
      cancelled = true;
    };
  }, [id]); // Re-run when id changes

  if (loading) return <div>Loading...</div>;
  return <div>{data}</div>;
}

Contexto e HOCs para Hooks

// Before: Context consumer and HOC
const ThemeContext = React.createContext();

class ThemedButton extends React.Component {
  static contextType = ThemeContext;

  render() {
    return (
      <button style={{ background: this.context.theme }}>
        {this.props.children}
      </button>
    );
  }
}

// After: useContext hook
function ThemedButton({ children }) {
  const { theme } = useContext(ThemeContext);

  return <button style={{ background: theme }}>{children}</button>;
}

// Before: HOC for data fetching
function withUser(Component) {
  return class extends React.Component {
    state = { user: null };

    componentDidMount() {
      fetchUser().then((user) => this.setState({ user }));
    }

    render() {
      return <Component {...this.props} user={this.state.user} />;
    }
  };
}

// After: Custom hook
function useUser() {
  const [user, setUser] = useState(null);

  useEffect(() => {
    fetchUser().then(setUser);
  }, []);

  return user;
}

function UserProfile() {
  const user = useUser();
  if (!user) return <div>Loading...</div>;
  return <div>{user.name}</div>;
}

Recursos Concorrentes do React 18

Nova API de Root

// Antes: React 17
import ReactDOM from "react-dom";

ReactDOM.render(<App />, document.getElementById("root"));

// Depois: React 18

…
Perguntas frequentes

O que são 'hooks'?

'Hooks' são uma forma mais moderna e simples de usar recursos do React em componentes, substituindo a necessidade de usar classes em muitos casos.

O que são 'concurrent features'?

São novas funcionalidades do React (a partir da versão 18) que permitem que a interface do usuário responda melhor e mais rápido, mesmo quando está fazendo tarefas pesadas.

O que são 'codemods'?

'Codemods' são ferramentas que ajudam a transformar automaticamente o código de um formato para outro, como atualizar sintaxe ou migrar de classes para hooks.

Detalhes

Descrição original do autor

Upgrade React applications to latest versions, migrate from class components to hooks, and adopt concurrent features. Use when modernizing React codebases, migrating to React Hooks, or upgrading to latest React versions.

repo: wshobson/agents

Popularidade

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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas