用setState钩子修改数组

时间:2020-08-18 14:25:54

标签: javascript reactjs react-hooks

我有一个JSON数组:

1

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。 谢谢

1 个答案:

答案 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
));