Javascript ReactJS:如何在数组状态下更新数据
如何在不追加新数据的情况下更新数组列表。因为我尝试了这个Javascript ReactJS:如何在数组状态下更新数据,javascript,reactjs,typescript,next.js,Javascript,Reactjs,Typescript,Next.js,如何在不追加新数据的情况下更新数组列表。因为我尝试了这个setRowData(arr=>[…arr,response['data'])然后它继续追加数据 相反,它将更新它将附加到其上的数组中的值。我认为您不需要扩展运算符。。您可以只使用array.map()。。也许这样的事情会对你有所帮助 const [rowData, setRowData] = useState([]); const old = {id: 'stud1', name: 'jake', room: '2'};
setRowData(arr=>[…arr,response['data'])代码>然后它继续追加数据
相反,它将更新它将附加到其上的数组中的值。我认为您不需要扩展运算符。。您可以只使用array.map()。。也许这样的事情会对你有所帮助
const [rowData, setRowData] = useState([]);
const old = {id: 'stud1', name: 'jake', room: '2'};
const newData = {name: 'jake', room: '3A'};
useEffect(() => {
let ignore = false;
(async function getUsers() {
let response = await getAll({ length: 999 });
if (!ignore) setRowData(response['data']['data']);
})()
return () => {
ignore = true;
}
}, []);
(async function updateItem() {
await update(oldData.id, newData).then(response => {
//value of response['data'] = {id: 'stud1', name: 'jake', room: '3A'}
setRowData(arr => [...arr, response['data']]);
}).catch(err => {
console.log(err);
})
})()
然后,您可以将x用于setRowData(x)因为您想要更新状态数组中的一个项目,所以您可以使用map并基于如下id更新该项目
const old = [{id: 'stud1', name: 'jake', room: '2'},{id: 'stud2', name: 'jack', room: '2'}];
const newData = {id: 'stud1', name: 'jakey', room: '3A'};
const x = old.map((stud) => {
if(stud.id === newData.id){
stud = newData;
}
return stud;
});
console.log(x);
rowData数组包含什么以及什么是响应['data'];我试图更新数据。然后,阵列上的所有数据都将被删除similar@BeginnerCoder我不明白你的意思。你是说数组中的所有内容都会用新对象更新吗?
(async function updateItem() {
await update(oldData.id, newData).then(response => {
setRowData(arr => arr.map(item => {
if (item.id === response.data.id) {
return response.data;
}
return item;
});
}).catch(err => {
console.log(err);
})
})()