我有一个JSON数组:
function createData(nom, age, poids, ) {
return {
nom,
age,
poids,
};
}
const [count, setCount] = useState([
]);
setCount(count=>count.concat(createData("mathieu",15)))
setCount(count=>count.concat(createData("jean",25)))
setCount(count=>count.concat(createData("ginette",55)))
setCount(count=>count[0].poids=13) // doesn't work
当nom = mathieu但不起作用时,我试图在现有的json数组中添加poids = 13。 你能帮我吗,我是新来的react hooks。 谢谢
答案 0 :(得分:2)
您的setCount()
回调应返回状态的新值。 count[0].poids = 13
将返回13
。您还应该not modify state directly,尽管您使用的是setState
,但是您正在检索以前的状态并尝试直接更新它。
相反,您可以使用.map()
返回一个新的对象数组,这将是您的新状态。在.map()
回调中,您可以指定每个对象如何“转换” /更改。如果nom
是“ mathieu”,则可以返回一个新转换的对象,否则,您只需返回当前对象即可。
setCount(count => count.map(
obj => obj.nom === "mathieu" ? {...obj, poids: 13} : obj
));