首页 > 解决方案 > 如何将值传递给 useState

问题描述

我是学习 js 和反应的新手。我创建了一个独立工作的 RNG 函数。但是,我想将它的值传递给我的 useState 中的 ticketNumber 变量。我尝试了通过“tickeNumber = rng”传递值的各种方法,甚至尝试通过“setComplaints(...complaint, ticketNumber = Math.floor(Math.random() * (maxValue - minValue + 1) ) + 最小值));

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

标签: javascriptreactjs

解决方案


通常,useState() 用于原始值,如字符串和数字或布尔值。如果需要保存对象,则需要确保每次都保存新对象,否则 React 将看不到更改(它仅使用简单的 a === 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,
  }
})

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


推荐阅读