| title | use memo |
|---|---|
| titleForTitleTag | 'use memo' directive |
"use memo" marca uma função para otimização pelo React Compiler.
Na maioria dos casos, você não precisa de "use memo". Ele é primariamente necessário no modo annotation, onde você deve marcar explicitamente as funções para otimização. No modo infer, o compilador detecta automaticamente componentes e hooks por seus padrões de nomenclatura (PascalCase para componentes, prefixo use para hooks). Se um componente ou hook não estiver sendo compilado no modo infer, você deve corrigir sua convenção de nomenclatura em vez de forçar a compilação com "use memo".
Adicione "use memo" no início de uma função para marcá-la para otimização pelo React Compiler.
function MyComponent() {
"use memo";
// ...
}Quando uma função contém "use memo", o React Compiler a analisará e otimizará em tempo de compilação. O compilador automaticamente memorizará valores e componentes para evitar recomputações e re-renderizações desnecessárias.
"use memo"deve estar no início do corpo da função, antes de quaisquer imports ou outro código (comentários são permitidos).- A diretiva deve ser escrita com aspas duplas ou simples, não com crases.
- A diretiva deve corresponder exatamente a
"use memo". - Apenas a primeira diretiva em uma função é processada; diretivas adicionais são ignoradas.
- O efeito da diretiva depende da sua configuração de
compilationMode.
Em um aplicativo React que usa o React Compiler, as funções são analisadas em tempo de compilação para determinar se podem ser otimizadas. Por padrão, o compilador infere automaticamente quais componentes memorizar, mas isso pode depender da sua configuração de compilationMode, se você a definiu.
"use memo" marca explicitamente uma função para otimização, substituindo o comportamento padrão:
- No modo
annotation: Apenas funções com"use memo"são otimizadas. - No modo
infer: O compilador usa heurísticas, mas"use memo"força a otimização. - No modo
all: Tudo é otimizado por padrão, tornando"use memo"redundante.
A diretiva cria um limite claro em sua base de código entre código otimizado e não otimizado, dando a você controle granular sobre o processo de compilação.
Você deve considerar usar "use memo" quando:
Em compilationMode: 'annotation', a diretiva é necessária para qualquer função que você queira otimizar:
// ✅ Este componente será otimizado
function OptimizedList() {
"use memo";
// ...
}
// ❌ Este componente não será otimizado
function SimpleWrapper() {
// ...
}Comece com o modo annotation e otimize seletivamente componentes estáveis:
// Comece otimizando componentes folha
function Button({ onClick, children }) {
"use memo";
// ...
}
// Gradualmente suba na árvore conforme verifica o comportamento
function ButtonGroup({ buttons }) {
"use memo";
// ...
}O comportamento de "use memo" muda com base na sua configuração do compilador:
// babel.config.js
module.exports = {
plugins: [
['babel-plugin-react-compiler', {
compilationMode: 'annotation' // ou 'infer' ou 'all'
}]
]
};// ✅ Otimizado com "use memo"
function ProductCard({ product }) {
"use memo";
// ...
}
// ❌ Não otimizado (sem diretiva)
function ProductList({ products }) {
// ...
}// Automaticamente memorizado porque este é nomeado como um Componente
function ComplexDashboard({ data }) {
// ...
}
// Ignorado: Não é nomeado como um Componente
function simpleDisplay({ text }) {
// ...
}No modo infer, o compilador detecta automaticamente componentes e hooks por seus padrões de nomenclatura (PascalCase para componentes, prefixo use para hooks). Se um componente ou hook não estiver sendo compilado no modo infer, você deve corrigir sua convenção de nomenclatura em vez de forçar a compilação com "use memo".
Para confirmar que seu componente está sendo otimizado:
- Verifique a saída compilada em seu build.
- Use o React DevTools para verificar o selo ✨ Memo.
"use no memo"- Desativar compilaçãocompilationMode- Configurar comportamento de compilação- React Compiler - Guia de introdução