Skip to content

Cheat Sheet de React

Última verificación mayo 2026 — corre en tu navegador
Cheatsheet de React
function App() {
  return <h1>Hello</h1>;
}

Componente de función

Componentes
const App = () => <h1>Hello</h1>;

Componente con arrow function

Componentes
function Greet({ name }) {
  return <p>Hi {name}</p>;
}

Componente con props

Componentes
export default App;

Exportar componente como default

Componentes
<App title="Hi" count={5} />

Usar componente con props

Componentes
<>
  <A /> <B />
</>

Fragmento (sin wrapper)

Componentes
{items.map(item => <li key={item.id}>{item.name}</li>)}

Renderizar lista con keys

Componentes
{condition && <Alert />}

Render condicional (and)

Componentes
{loading ? <Spinner /> : <Data />}

Render condicional (ternario)

Componentes
<div className="btn primary">Click</div>

Clase CSS (className)

Componentes
<div style={{color: 'red', fontSize: 14}}>X</div>

Estilos inline (objeto)

Componentes
<button onClick={() => setN(n + 1)}>+</button>

Event handler

Componentes
const [count, setCount] = useState(0);

Estado con valor inicial

Hooks
setCount(count + 1);

Actualizar estado

Hooks
setCount(c => c + 1);

Actualización funcional

Hooks
setUser({...user, name: 'Alice'});

Actualizar objeto con spread

Hooks
setItems([...items, newItem]);

Añadir a array estado

Hooks
useEffect(() => {
  fetchData();
}, []);

Ejecutar al montar

Hooks
useEffect(() => {
  ...
}, [dep1, dep2]);

Ejecutar cuando cambian deps

Hooks
useEffect(() => {
  const id = setInterval(...);
  return () => clearInterval(id);
}, []);

Effect con cleanup

Hooks
const ref = useRef(null);
<input ref={ref} />

Ref del DOM

Hooks
const renders = useRef(0);

Ref mutable (sin re-render)

Hooks
const value = useMemo(() => expensive(x), [x]);

Memoizar cálculo

Hooks
const fn = useCallback(() => doThing(x), [x]);

Memoizar callback

Hooks
const theme = useContext(ThemeContext);

Consumir context

Hooks
const [state, dispatch] = useReducer(reducer, initial);

Patrón reducer

Hooks
function useDebounce(value, delay) { ... }

Hook personalizado

Hooks
const [email, setEmail] = useState('');
<input value={email} onChange={e => setEmail(e.target.value)} />

Input controlado

Formularios
<input type="checkbox" checked={on} onChange={e => setOn(e.target.checked)} />

Checkbox controlado

Formularios
<form onSubmit={e => { e.preventDefault(); submit(); }}>

Manejador de submit

Formularios
<input ref={inputRef} defaultValue="hi" />

Input no controlado (ref)

Formularios
const ThemeContext = createContext('light');

Crear context

Context
<ThemeContext.Provider value="dark">
  <App />
</ThemeContext.Provider>

Proveer valor de context

Context
<BrowserRouter>
  <Routes>
    <Route path="/" element={<Home />} />
  </Routes>
</BrowserRouter>

Rutas básicas

Rutas
<Link to="/about">About</Link>

Enlace de navegación

Rutas
const navigate = useNavigate();
navigate('/home');

Navegación programática

Rutas
const { id } = useParams();

Leer parámetros de URL

Rutas
const [params] = useSearchParams();

Leer query string

Rutas
const Button = React.memo(({ onClick }) => ...);

Memoizar componente

Rendimiento
const Heavy = lazy(() => import('./Heavy'));
<Suspense fallback={<Loader/>}><Heavy /></Suspense>

Code splitting con Suspense

Rendimiento
Mostrando 40 de 40 fragmentos

Cheat Sheet de React — Hooks, Componentes, JSX y Context API

React apareció en 2013 con JSX y componentes de clase; el modelo de funciones más hooks de 2019 es el enfoque recomendado desde entonces, y la mayoría del código React de hoy se parece más a una lista de funciones puras de render que al ciclo de vida original. La chuleta de abajo cubre más de 40 patrones entre componentes, hooks, formularios, contexto, rutas y rendimiento. La mayoría de los líos en componentes reales no vienen de olvidar la sintaxis de JSX. Vienen de rarezas que parecen normales pero muerden. Un `useEffect` que lee un valor de estado sin listarlo en el array de dependencias lee el valor del render que creó el efecto, no el más reciente. Una lista sin un `key` estable reutiliza nodos del DOM en órdenes inesperados al reordenarse. Estos son los fragmentos que se acaban consultando al depurar precisamente eso: el array de dependencias que corta un bucle de efecto, el updater funcional que sobrevive al batching, el cleanup que detiene un intervalo, sin tener que releer la referencia de React desde la línea uno cada vez.

Trampas habituales en React

Hay un puñado de patrones que merecen estar en la primera pantalla de cualquier componente de React. El updater funcional `setCount(c => c + 1)` debería sustituir a la forma con valor siempre que el nuevo estado dependa del anterior: sobrevive al batching y evita el clásico bug del contador que se queda corto. Los arrays de dependencias de los efectos deberían listar cada valor reactivo que el efecto lee, incluidos props, estado y funciones declaradas dentro del componente; conviene mantener activa la regla `react-hooks/exhaustive-deps` de ESLint, porque los casos que detecta casi siempre son bugs reales de stale closure. Las listas necesitan un `key` estable que venga del propio dato, no del índice del array: los índices se desplazan al reordenar y confunden al reconciler. Las funciones de cleanup que devuelve `useEffect` importan para intervalos, suscripciones y listeners — además del desmontaje, se ejecutan en cada re-ejecución cuando cambian sus dependencias. La chuleta agrupa esto en Componentes, Hooks, Formularios, Contexto, Rutas y Rendimiento para que la sección adecuada esté a un clic.

  • Más de 40 patrones de React con JSX
  • Cobertura completa de hooks
  • Formularios controlados y submit
  • Context API y providers
  • Rutas con React Router v6
  • React.memo y lazy loading

Gratis. Sin registro. Tus datos permanecen en tu navegador. Anuncios mediante Google AdSense (con consentimiento).

Por ·