Reactjs 如何使用React钩子更改特定对象中的特定属性?

Reactjs 如何使用React钩子更改特定对象中的特定属性?,reactjs,Reactjs,我试图将一个对象更新为某个属性,但在新的渲染之后,我总是得到一条错误消息,即usePl不是映射函数。 例如,我想更改对象2中的图像属性 const pl=[ { id:1, Bezeichung:“Fit4组装工作表1-3”, erstellungsDatum:'28.07.2020', ersteller:“Max Maier”, aufgaben:['Aufgabe 1'、'Aufgabe 2'、'Aufgabe 3'], gruppe:'gruppe 1', 图片报:'' }, { id:

我试图将一个对象更新为某个属性,但在新的渲染之后,我总是得到一条错误消息,即
usePl
不是映射函数。 例如,我想更改对象2中的图像属性

const pl=[
{
id:1,
Bezeichung:“Fit4组装工作表1-3”,
erstellungsDatum:'28.07.2020',
ersteller:“Max Maier”,
aufgaben:['Aufgabe 1'、'Aufgabe 2'、'Aufgabe 3'],
gruppe:'gruppe 1',
图片报:''
},
{
id:2,
Bezeichung:“Fit4组装工作表1-3”,
erstellungsDatum:'28.07.2020',
ersteller:“Max Maier”,
aufgaben:['Aufgabe 1'、'Aufgabe 2'、'Aufgabe 3'],
gruppe:“gruppe 2”,
图片报:''
}
];
const[usePl,setUl]=React.useState(pl);
异步函数handleInputChangeBild(事件,id){
[...]
let reader=new FileReader();
reader.onload=(e)=>{
setUl((prevState)=>({
…国家,
[id]:e.target.result//例如,id为2
}));
};
[...]
}

您可以映射之前的状态数组(在您的示例中),并使用预期的ID更新元素的属性,只需在每次迭代中返回自身即可保持其他元素不变

异步函数handleInputChangeBild(事件,id){ [...] let reader=new FileReader(); reader.onload=(e)=>{ setUl((prevState)=>prevState.map(el=>{ 如果(el.id==id){ 返回{ …呃, “您的预期属性”:e.target.result } }否则{ 返回el } })); }; [...] } setUl((prevState)=>([…prevState,[id]:e.target.result//例如,id为2]))