Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

201
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!