Soy nuevo en aprender js y reaccionar. He creado una función RNG que funciona por sí sola. Sin embargo, me gustaría pasar su valor a mi variable ticketNumber en mi useState. He intentado varios métodos para pasar el valor por "tickeNumber = rng, e incluso intenté hacerlo haciendo "setComplaints(...complaint, ticketNumber = Math.floor(Math.random() * (maxValue - minValue + 1 ) + valor mínimo));
const [complaint, setComplaints] = useState({ email: "", message: "", ticketNumber: 0, }); function makeTicketNumber() { setComplaints(...complaint, (ticketNumber) => ticketNumber +1); } function randomNumberGenerator() { setRng(Math.floor(Math.random() * (maxValue - minValue + 1) + minValue)); // complaint.ticketNumber = rng; }Por lo general, useState() se usa con valores primitivos como cadenas y números o valores booleanos. Si necesita guardar el objeto, debe asegurarse de guardar el nuevo objeto cada vez, de lo contrario, React no verá los cambios (solo usa una comparación simple === b).
Entonces puede dividir sus variables en varias llamadas useState ()
const [email, setEmail] = useState(initialEmail) const [ticketNumbers, setTicketNumber] = useState(initialNumbers)o use dicho patrón para actualizar valores:
setComplaint({...complaint, ticketNumber: 10})Actualizar.
setComplaint() puede tomar la función como argumento, que proporciona el valor prevState. Si desea usarlo por alguna razón, puede escribirlo de esa manera:
setComplaint(prevComplaint => { return { ...prevComplaint, ticketNumber: prevComplaint.ticketNumber + 1, } })pero esa es una solución más voluminosa.
Lo que sea que configure dentro de setCompaints() se convertirá en su nuevo estado,
En este momento, ese es el objeto de queja + una función, que probablemente no sea lo que desea.
Prueba esto:
function makeTicketNumber() { return setComplaints({...complaint, ticketNumber: ticketNumber + 1}); }