reactjs - 将对象添加到状态时出现 React.js 错误(使用反应挂钩)
问题描述
我有一个函数可以生成一个我想添加到我的状态的对象。我正在使用反应钩子。这是我的代码:
const [roomMatches, setRoomMatches] = useState({
"user2":{ "percentMatch":"1.0"},
"user3":{ "percentMatch": ".30"}
})
var newMatch = {
survey:{
['percentMatch']: .99
}
}
setRoomMatches([...roomMatches, newMatch]);
我的问题是我不断收到同样的错误
Uncaught TypeError: roomMatches is not iterable
如何添加到当前状态而不删除该状态中的所有内容?
解决方案
看起来您正在尝试做的是将您的合并newMatch
到现有roomMatches
状态,然后更新状态。为此,您需要执行以下操作:
const newState = {...roomMatches, ...newMatch};
setRoomMatches(newState);
在上面的代码中,您尝试使用数组而不是对象来更新状态(并且,正如评论所暗示的,将对象传播到数组中是行不通的)。
推荐阅读
- intellij-idea - 奇怪的错误 Intellij 2020.1 - 模棱两可的方法调用错误
- powershell - Powershell 脚本检查用户是否存在于 Active Directory 中并导出到 csv
- xslt - 在 IBM APIConnect 中将 JSON 映射到 XML SOAP Web 服务时跳过空名称空间
- c++ - QGraphicsView:修改另一个项目时重新绘制一个项目
- excel - 如何计算 Microsoft Excel 中的唯一 ID?
- python - 蟒蛇 | 在网站中读取脚本并在终端中运行
- android - 在 ViewPager2 中,在特定索引处重新创建片段
- dataframe - Pyspark 数据框比较
- python - gRPC服务器中的ThreadPoolExecutor如何清理?
- mysql - MySQL中的嵌套级别