如何将值传递给useState ?



我刚开始学习js和react。我已经创建了一个独立工作的RNG函数。但是,我想把它的值传递给我的useState中的ticketNumber变量。我已经尝试了通过"tickennumber = rng"传递值的各种方法,甚至尝试通过"setComplaints(…complaint, ticketNumber = Math.floor(Math.random() * (maxValue - minValue + 1) + minValue))";

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

useState()通常用于字符串、数字或布尔值等基本值。如果您需要保存对象时,你需要确保你每次保存新对象,否则不会看到这些变化反应(它使用= = = b比较)。

所以你可以在几个useState()调用中拆分变量

const [email, setEmail] = useState(initialEmail)
const [ticketNumbers, setTicketNumber] = useState(initialNumbers)

或使用这样的模式来更新值:

setComplaint({...complaint, ticketNumber: 10})

更新。

setComplaint()可以将函数作为参数,该参数提供了prevState的值。如果你出于某种原因想要使用它,你可以这样写:

setComplaint(prevComplaint => {
return {
...prevComplaint,
ticketNumber: prevComplaint.ticketNumber + 1,
}
})

但这是一个庞大的解决方案。

无论您在setCompaints()中设置什么都将变成您的新状态,

现在,这是抱怨对象+一个函数,这可能不是你想要的。

试试这个:

function makeTicketNumber() {
return setComplaints({...complaint, ticketNumber: ticketNumber + 1});
}

相关内容

  • 没有找到相关文章

最新更新