Reactjs 将对象添加到状态时出现React.js错误(使用React挂钩)

Reactjs 将对象添加到状态时出现React.js错误(使用React挂钩),reactjs,react-hooks,Reactjs,React Hooks,我有一个函数,它生成一个我想添加到我的状态的对象。我在用鱼钩。这是我的密码: const [roomMatches, setRoomMatches] = useState({ "user2":{ "percentMatch":"1.0"}, "user3":{ "percentMatch": ".30"}

我有一个函数,它生成一个我想添加到我的状态的对象。我在用鱼钩。这是我的密码:

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

如何在不删除allready状态中的内容的情况下添加到当前状态?

看起来您要做的是将新匹配项合并到现有roomMatches中,然后更新状态。为此,您需要执行以下操作:

const newState = {...roomMatches, ...newMatch};
setRoomMatches(newState);

在上面的代码中,您试图用数组而不是对象来更新状态,正如注释所示,将对象分散到数组中是行不通的。

正如Jayce444所指出的,您试图将roomMatches对象分散到数组中,这是不可能的

我相信你想要这样的东西:

const[roomMatches,setRoomMatches]=useState{ user2:{percentMatch:'1.0'}, user3:{percentMatch:'.30'}, }; var newMatch={ 调查:{ 匹配百分比:0.99, }, }; setRoomMatches{…roomMatches,newMatch}; 另外,我不确定这是否是有意的,但在调用setRoomMatches时,您可能也想传播newMatch。

well roomMatches是一个对象,但您试图将其传播到数组中。