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

186
Vistas
Memoriza una función en React

Hay un componente que recibe props.

Los accesorios tienen la forma de una matriz, para cada elemento de esta matriz, una función devolverá un componente diferente para representar.

 function MainComponent ({ data }) => { // data is props, an array const specialFunction = (index) => { switch (index) { case 0: return <Component0 />; case 1: return <Component1 />; case 2: return <Component2 />; default: return null; } }; ... return ( ... data.map((item, index) => { ... // do other stuff with item <div>{specialFunction(index)}</div> // the function that we talk about ... );

¿Hay alguna manera de memorizar el resultado de esto si los accesorios no van a cambiar? ¿O alguna forma de escribirlo mejor?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Hay un par de maneras de lograr esto:

  1. Podrías usar un estado para almacenar la matriz

const [components] = useState([<Component0 />, <Component1 />, <Component2 />])

Y luego solo use components[index] cuando intente renderizar.

  1. Podrías probar useCallback para memorizar tu función.
about 4 years ago · Juan Pablo Isaza Denunciar

0

useCallback con una matriz de dependencia vacía será el mejor enfoque aquí. useCallback devolverá una versión memorizada de la devolución de llamada que solo cambia si una de las dependencias ha cambiado. Dado que nuestra matriz de dependencia es [] , se inicializará solo una vez y la función memorizada devuelta se usará en llamadas de funciones posteriores.

 const specialFunction = useCallback((index) => { switch (index) { case 0: return <Component0 />; case 1: return <Component1 />; case 2: return <Component2 />; default: return null; } }, []);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Otro patrón, creo que en este caso el más elegante es usar:

 const components = { 0: <Component0 />, 1: <Component1 />, 2: <Component2 />, } /* or const components = [<Component0 />, <Component1 />, <Component2 />] */ function MainComponent ({ data }) => { ... return ( ... data.map((item, index) => <div>{components[index] || null}</div> ... );
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