Свойства локального хранилища - PullRequest
0 голосов
/ 12 апреля 2020
export const addNabuaItem = (item = [], count = 0, next = f => f) => {
let nabua = [];
if (typeof window !== 'undefined') {
    if (localStorage.getItem('nabua')) {  //If it has cart in local storage then ...
        //NOTE to convert json to object 
        // get product from local storage 
        nabua = JSON.parse(localStorage.getItem('nabua'));
    }
    //NOTE store it as an Array of Object 
    nabua.push({
        ...item,
        count: 1 // NOTE intitial count after item was added by a user is one
    });   
    // remove duplicates
    // build an Array from new Set and turn it back into array using Array.from
    // so that later we can re-map it
    // new set will only allow unique values in it
    // so pass the ids of each object/product
    // If the loop tries to add the same value again, it'll get ignored
    // ...with the array of ids we got on when first map() was used
    // run map() on it again and return the actual product from the cart

    nabua = Array.from(new Set(nabua.map(p => p._id))).map(id => {
        return nabua.find(p => p._id === id);
    });

    localStorage.setItem('nabua', JSON.stringify(nabua));
    next();
}
};

Это мой код для добавления товаров в корзину (магазин в Local Storage). Я хотел бы добавить только указанное c свойство продукта, такое как только имя, цена и описание, потому что я не хочу хранить ненужные свойства в локальном хранилище. Как я могу это сделать ?

Ниже находится моя консоль локального хранилища, содержащая объект продукта, введите описание изображения здесь

1 Ответ

0 голосов
/ 12 апреля 2020

Просто добавьте еще одну карту, когда вы присваиваете nabua, чтобы она выглядела следующим образом:

nabua = Array.from(new Set(nabua.map(p => p._id))).map(id => {
    return nabua.find(p => p._id === id);
})
.map(item => ({
  field1: item.field1,
  field2: item.field2
}));

И создайте field1 / field2 любое поле, которое вам нравится. Так что, если вы хотите имя, описание и цену, это может выглядеть примерно так

.map(item => ({
      name: item.name,
      description: item.description,
      price: item.price
}));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...