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

169
Views
Tengo problemas para actualizar el estado con un menú de selección

Como sugiere el título, tengo problemas para actualizar el estado con un menú de selección. No estoy seguro de si el problema proviene del hecho de que estoy tratando de actualizarlo desde varias fuentes.

getSurvivorPerks obtiene una matriz de objetos. En la carga de la página, se seleccionan 4 aleatorios para que se muestren, y estos cuatro se aleatorizan en cada handlesubmit. Me gustaría poder seleccionar manualmente las ventajas individuales para la ventaja 1, 2, etc. con un menú de selección. A partir de ahora, esto solo da como resultado que perk1 se establezca en Nulo. Los datos se muestran correctamente en el menú de selección.

 export default function SurvivorRandomizer() { const [survivorPerk1, setSurvivorPerk1] = useState({}); const [survivorPerk2, setSurvivorPerk2] = useState({}); const [survivorPerk3, setSurvivorPerk3] = useState({}); const [survivorPerk4, setSurvivorPerk4] = useState({}); const [perkList, setPerkList] = useState([]); const [loading, setLoading] = useState(true); const { user } = useUser(); useEffect(() => { const fetchData = async () => { const data = await getSurvivorPerks(); let perks = randomPerks(data); setPerkList(data); setSurvivorPerk1(perks[0]); setSurvivorPerk2(perks[1]); setSurvivorPerk3(perks[2]); setSurvivorPerk4(perks[3]); setLoading(false); }; fetchData(); }, []); const handleSubmit = () => { let perks = randomPerks(perkList); setSurvivorPerk1(perks[0]); setSurvivorPerk2(perks[1]); setSurvivorPerk3(perks[2]); setSurvivorPerk4(perks[3]); }; if (loading) return <h1>loading...</h1>; return ( <> <div className="perk-row-1"> <div className="perk-card"> <PerkCard {...survivorPerk1} /> <select value={perkList.perk} onChange={(e) => setSurvivorPerk1(e.target.value)}> <option>Select...</option> {perkList.map((perk) => ( <option key={uuid()} value={perk}> {perk.name} </option> ))} </select> </div>
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El problema aquí (tenía mis anteojeras) es que el valor no puede ser un objeto.

 const handlePerkSelect = async (perk, id) => { let setPerk = await getSurvivorPerkById(id); perk(setPerk); }; ------------- <select onChange={(e) => handlePerkSelect(setSurvivorPerk1, e.target.value)}> <option>Select...</option> {perkList.map((perk) => ( <option key={uuid()} value={perk.ID}> {perk.name} </option> ))} </select>

Esta fue mi solución. Definitivamente hay una mejor manera de hacerlo que no implica hacer más solicitudes de recuperación, y probablemente lo refactorizaré, pero en caso de que esto ayude a alguien, pensé en compartir cuál era el problema.

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!