Я работаю над приложением планировщика стола, где гости могут быть назначены на обеденные столы.
Я создал массив объектов в состоянии с именем tabledata, который будет содержать такие объекты:
this.state = {
tabledata: [
{
name: "Top Table",
guests: ["guest1", "guest2", "guest3"]
},
{
name: "Table One",
guests: ["guest3", "guest4", "guest5"]
}
]
}
Затем я создаю интерфейс перетаскивания, где гости могут перемещаться между столами. Я попытался обновить состояние следующим образом:
updateTableList (tablename, guest) {
const selectedTableObj = this.state.tabledata.filter((tableObj) => tableObj.name === tablename);
const otherTableObjs = this.state.tabledata.filter((tableObj) => tableObj.name !== tablename);
selectedTableObj[0].guests.push(guest);
const updatedObjectArray = [...otherTableObjs, selectedTableObj];
this.setState({
tabledata: [...otherTableObjs, ...selectedTableObj]
});
}
Это работает, но поскольку я удаляю selectedTableObj из состояния, а затем добавляю его в конец массива, я получаю несколько забавных результатов на экране. Обновленная таблица всегда идет вниз страницы (как и следовало ожидать).
Как обновить объект, не меняя его положение в массиве?