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

120
Vistas
Reaccionar usando matriz de estado sin mutación

¿Se puede refactorizar el siguiente código para no mutar la matriz de estado? Básicamente, quiero que mientras navego por la aplicación de un lado a otro a través de props.history.push, no debería volver a crear la matriz, ya que mi objetivo es conservar la opción seleccionada.

 const [options1, setOptions1] = useState([ {value: 'ABC', text: 'ABC', id: 1}, {value: 'DEF', text: 'DEF', id: 2} ]); const [options2, setOptions2] = useState([ {value: 'ABC', text: 'ABC', id: 1}, {value: 'DEF', text: 'DEF', id: 2}, {value: 'XYZ', text: 'XYZ', id: 3} ]); let finalOpts = options1; // Is there a better way to do this ? if (someConditionIsTrue) { finalOpts = options2; } const [selectedOpt, setSelectedOpt] = useState(finalOpts[0]); <MyList id="myDD" selectedOpt={selectedOpt} options={finalOpts} />
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Use useMemo para precalcular los valores si su lógica de interfaz de usuario depende de algún condicional. Esto por sí solo no preservará el estado seleccionado si el componente está desmontado. Para conservar el estado seleccionado incluso después de que se haya desmontado el componente, deberá almacenar la selección en algún tipo de estado global.

 const options = useMemo(() => { if(someConditionIsTrue) { return [ {value: 'ABC', text: 'ABC', id: 1}, {value: 'DEF', text: 'DEF', id: 2} ]; } return [ {value: 'ABC', text: 'ABC', id: 1}, {value: 'DEF', text: 'DEF', id: 2}, {value: 'XYZ', text: 'XYZ', id: 3} ] }, [someConditionIsTrue]); const [selectedItem, setSelectedItem] = useState(); return (<MyList id="myDD" selectedOpt={selectedItem || options[0]} onSelectionChanged={setSelectedItem} options={options} />)
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