javascript - 如何将值传递给 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;
}
解决方案
通常,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,
}
})
但这是一个更大的解决方案。
推荐阅读
- php - 月份名称是否可以用我的语言显示
- python - 无法使用 python 子进程模块运行 scp 命令
- node.js - 获取 TypeError:Router.use() 需要一个中间件函数,但有一个未定义的
- php - 我可以使用`??`(空合并运算符)而不是空的吗?
- google-apps-script - 如果 UrlFetchApp 出错,则 muteHttpExceptions 跳转到第 86 行
- python - ImportError: cannot import name 'string_int_label_map_pb2' (尝试了网络上的所有解决方案)
- python - 具有无限求和的 Python 曲线拟合
- autohotkey - 在不重新显示 GUI 的情况下更改 GUI 中显示的数据
- php - 在 PHP 中创建跨范围变量
- reactjs - Reactjs:如何从 submitHandler 访问上下文?