Обновление данных по URL параметрам в хранилище в React Router
На прошлом уроке мы с вами добавили еще один маршрут и страничку с формой для редактирования данных. Нам осталось сохранить данные, внесенные в нашу форму.
Для начала добавим функцию для обновления
данных продукта updateProduct
в
forStorage.js
. Нам нужно передать
в нее id
продукта и измененные
данные:
export async function updateProduct(id, updates) {
await someNetwork();
}
Далее из хранилища по ключику products
получим продукты и найдем тот, который
мы изменяем по его id
. В случае неудачи
кинем ошибку:
export async function updateProduct(id, updates) {
await someNetwork();
let products = await localforage.getItem('products');
let product = products.find((product) => product.id === id);
if (!product) throw new Error('No product found for this', id);
}
Затем нам останется внести изменения
в найденный продукт и перезаписать
обновленный список в хранилище с помощью
нашей функции setProducts
:
export async function updateProduct(id, updates) {
await someNetwork();
let products = await localforage.getItem('products');
let product = products.find((product) => product.id === id);
if (!product) throw new Error('No product found for this', id);
Object.assign(product, updates);
await setProducts(products);
return product;
}
Возьмите приложение, созданное вами в
заданиях к прошлым урокам. Пользуясь
материалами урока, добавьте в файл
forStorage.js
функцию
updateStudent
для обновления
данных студента в хранилище.