Добавление данных в хранилище в React Router

В этом уроке мы займемся добавлением продукта в хранилище. Для начала нам нужна функция createProduct для создания продукта, добавим ее в forStorage.js после функции getProducts:

forStorage.jsexport async function createProduct() {}

Сначала снова добавляем someNetwork:

forStorage.jsexport async function createProduct() {
  await someNetwork();
}

А вот далее нам понадобится уникальный id для каждого продукта, вы уже встречались с этим в учебнике React. Воспользуемся для этого библиотекой nanoid. Введем в терминале следующую команду:

terminalnpm install --save nanoid

Импортируем в forStorage.js библиотеку:

forStorage.jsimport { nanoid } from 'nanoid'

Пусть у нас будут id по 6 символов:

forStorage.jsexport async function createProduct() {
  await someNetwork();
  let id = nanoid(6);
}

Изначально при создании продукта у нас будут в объекте только id. Вызовем getProducts, добавим сгенерированный продукт и обновим список наших продуктов в хранилище. Готово:

forStorage.jsexport async function createProduct() {
  await someNetwork();
  let id = nanoid(6);
  let product = { id };
  let products = await getProducts();
  products.unshift(product);
  await setProducts(products);
  return product;
}

Функция для обновления списка в хранилище будет следующей (мы будет вносить в него продукты под ключиком products), расположим ее после функции createProduct:

forStorage.jsfunction setProducts(products) {
  return localforage.setItem('products', products);
}
Задание 1

Возьмите приложение, созданное вами в заданиях к прошлым урокам. Пользуясь материалами урока, напишите в forStorage.js функцию createStudent и setStudents для добавления данных студентов в хранилище.