Эта функция в моем главном приложении. js компонент. Вызывается, когда мне нужно добавить определенные свойства к одному из объектов в состоянии.
функция ... 1 отражает состояние с помощью [... books] 2. находит объект в массиве, если он не находится в состоянии, он выдвигает его 3. добавляет необходимые свойства
4. вызывает обновление сервера и, если ответ сервера положительный ... 5 обновляет состояние с помощью setBooks ()
Когда объект находится в состоянии, и мне нужно только добавить свойства к объекту, происходит refre sh.
Но если объект книги не был найден в состоянии, и я фактически перемещаю объект в состояние массив ... он не будет перерисовывать. Мне нужно в браузере сделать pu sh F5, чтобы увидеть объект, который отображается.
const [books, setBooks] = useState([]);
const changeShelf = (book, shelf) => {
const updatedBooks = [...books];
let found = updatedBooks.findIndex(element => book.id === element.id);
if (found === -1) {
updatedBooks.push(book);
found = books.length - 1;
}
updatedBooks[found].shelf = shelf;
updatedBooks[found].stamp = Date.now();
BooksAPI.update(book, shelf).then(data => {
console.log(data);
if (data[shelf].includes(book.id)) setBooks(updatedBooks);
});
};