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

205
Vistas
Cómo restablecer el menú desplegable seleccionado al cambiar el botón de opción en ReactJS

Tengo botones de radio seguidos de un menú desplegable de selección. Cada botón de radio está asociado con un conjunto de opciones relacionadas con él. Cada vez que se cambia el botón de radio, la opción en el menú desplegable también debe cambiar. Pero el problema al que me enfrento es que la opción no se restablece si los valores de las opciones son los mismos.

estos son los datos

 const data = [ { name: "option1", info: [1, 2, 3, 4, 5] }, { name: "option2", info: [1, 2, 3, 4, 5] }, { name: "option3", info: [6, 7, 8, 9, 10] } ];

He creado un enlace de ejemplo aquí. Enlace ( https://codesandbox.io/s/react-hello-world-forked-rnwe2?file=/src/index.js )

Esto se basa en ReactJS.

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

0

Pero el problema al que me enfrento es que la opción no se restablece si los valores de las opciones son los mismos.

Supongo que esto significa que desea que el menú desplegable se restablezca al primer índice cada vez que se cambia el botón de opción. En este momento, el DOM tiene el control de lo que está seleccionado actualmente, por lo que si, por ejemplo, se selecciona el tercer elemento en la lista desplegable, el DOM almacenará que el tercer elemento tiene un valor seleccionado. React solo cambia los valores que hay en cada elemento cuando cambia la opción (ver reconciliación ), en realidad no está recreando el nodo de select en el DOM.

Para esto, sugiero hacer que el elemento select sea controlado, por ejemplo

 import React, { useState } from "react"; import ReactDOM from "react-dom"; function App() { const [current, setCurrent] = useState(1); const [selected, setSelected] = useState(""); const data = [ { name: "option1", info: [1, 2, 3, 4, 5] }, { name: "option2", info: [1, 2, 3, 4, 5] }, { name: "option3", info: [6, 7, 8, 9, 10] } ]; function handleChange(id) { setCurrent(id); setSelected(""); } function handleSelected(event) { setSelected(event.target.value); } return ( <div> {data.map((item, key) => { return ( <label key={key}> <input type="radio" name="test" checked={key === current ? true : false} onChange={(e) => handleChange(key)} value={key} /> {item.name} </label> ); })} <hr /> <br /> <select value={selected} style={{ width: "100px", padding: 10 }} onChange={handleSelected} > {data[current].info.map((item, key) => { return <option>{item}</option>; })} </select> </div> ); } const rootElement = document.getElementById("root"); ReactDOM.render(<App />, rootElement);

https://codesandbox.io/s/react-hello-world-forked-d9cuh?file=/src/index.js

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