Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

280
Vistas
¿Se puede usar useHistory como un valor de useRef?

Por un capricho...🤔
Escribí el siguiente código

 import React, { useRef } from 'react'; import { useHistory } from 'react-router-dom'; // Parent component const Example: React.FC = () => { // Case A: const packHistoryToRef = useRef<ReturnType<typeof useHistory>>(useHistory()); // Case B: const history = useHistory(); console.log(packHistoryToRef); // It works!😎 return ( [1, 2, 3, 4, 5].map(i => ( // Case A solution <Child history={packHistoryToRef} /> // Case B solution <Child history={history} /> )) ) } // Child component const Child = ({ history }) => { // Case A: Is `history` object point to the same memory address? // Case B: There's five printouts here. Does that mean it's gonna repeat it five times? console.log(history, 'history') }

¿Es seguro para mí usarlo así?

De lo contrario, creo que este es el beneficio de hacer esto es

  1. Guardar memoria
  2. Claro
  3. Es muy útil en componentes secundarios (especialmente en ListItem)
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede useHistory puede usarse como un valor de useRef

Sí, puede almacenar cualquier valor que desee en una referencia de React.

La razón por la que useRef(useHistory()) es porque todavía sigue las reglas de los ganchos.

Seria equivalente a:

 const history = useHistory(); const packHistoryToRef = useRef(history);

Los ganchos se llaman en el mismo orden, incondicionalmente, en cada ciclo de renderizado.

Lo hace

  1. Guardar memoria

    Supongo que guarda una sola declaración de variable. No mucho mas.

  2. Claro

    Me parece lo suficientemente claro, o cualquier otra persona familiarizada con javascript, React y React hooks. Aunque, en general, es mejor ser más explícito con lo que está haciendo su código que tratar de ser "elegante".

  3. Es muy útil en componentes secundarios (especialmente en ListItem)

    No diría que es más útil que simplemente declarar explícitamente el objeto de history primero.

Sugeriría apegarse a escribir código que se lea más claramente, cada línea con un propósito específico.

 const history = useHistory(); // (1) define history const historyRef = useRef(history); // (2) save ref

Actualizar

 // Parent component const Example: React.FC = () => { // Case A: const packHistoryToRef = useRef<ReturnType<typeof useHistory>>(useHistory()); // Case B: const history = useHistory(); console.log(packHistoryToRef); // It works!😎 return ( [1, 2, 3, 4, 5].map(i => ( // Case A solution <Child history={packHistoryToRef} /> // Case B solution <Child history={history} /> )) ) }

Como señalé en los comentarios, el objeto de history proporcionado por el useHistory ya es básicamente una referencia a una instancia de historial singular, por lo que almacenarlo en una referencia de React propia no proporciona ningún beneficio adicional. Simplemente pase el history de useHistory a los componentes secundarios.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda