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

175
Vistas
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 Respuestas
Responde la pregunta

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 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