Форум программистов, компьютерный форум, киберфорум
Vue.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
1 / 4 / 5
Регистрация: 17.09.2015
Сообщений: 194

После обновления страницы массив очищается, как исправить?

26.08.2023, 19:28. Показов 2173. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть массив с данными:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const Json = [
  {
    id: 1,
    value: 0,
    addPlus(id) {
      this.value = this.value + 1;
    },
    addMinus(id) {
      if (this.value > 0) {
        this.value = this.value - 1;
      }
    },
    image: "../img/juice_Ides.png",
    quantity: "В наличии 5 шт",
    name: "Хлеб Крестянский, 400г",
    price: "56",
    currency: "руб",
    basket: "В корзину",
    descr:
      "Мука пшеничная хлебопекарная первого сорта, вода, мука ржаная хлебопекарная сеяная, сахар-песок, соль поваренная пищевая, солод ржаной, экстракт солодовый.",
  },
}
Когда я нажимаю на кнопку + у меня происходит вызов функции addPlus и в массиве в свойстве объекта
JavaScript
1
value
увеличивается значение с 0 до 1, с 1 до 2, с 2 до 3 и т.д.

Затем я это обновленное значение(отвечающее за количество выбранного товара) вывожу на экран.

Проблема в том, что после обновления страницы это значение снова становится 0, а не тем, которое было до обновления страницы.

Вопрос состоит в том, как изменять мой настоящий массив, перезаписывать в нем значение? Возможно ли это?

Я читал про VUEX, но так и не понял - тот ли это случай, когда его нужно использовать.
И вроде как сейчас используют Pinia вместо VUEX.

Так ли это?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.08.2023, 19:28
Ответы с готовыми решениями:

LocalStorage очищается после обновления страницы
Работаю с LocalStorage впервые и если использовать обычный метод localStorage.setItem, то все работает. Однако нужно подключить функию с...

Количества товара в корзине отображается после обновления страницы как исправить?
Добрый день! Возник такой вопрос на Virtuemart 2.0.14 при нажатии на кнопку Добавить в корзину ни чего не отображается (ни каких...

После обновления страницы на время съезжают картинки, после полной загрузки страницы все восстанавливается
Помогите разобраться.. не пойму, из-за чего съезжают картинки услуг в две колонки.. после полной загрузки, становится все на место... сайт...

4
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
26.08.2023, 19:39
Лучший ответ Сообщение было отмечено Константин345 как решение

Решение

Чтобы значение сохранилось после перезагрузки страницы, его придётся как минимум записать в локальное хранилище — localStorage, sessionStorage, indexedDB. Да, часто локальное хранилище интегрируется с менеджерами состояния приложения типа Пинии.
1
1 / 4 / 5
Регистрация: 17.09.2015
Сообщений: 194
26.08.2023, 20:52  [ТС]
DrType, да уж, я эти темы в свое время не стал читать на learn.js и вот видимо пришла пора)
Спасибо!
0
1 / 4 / 5
Регистрация: 17.09.2015
Сообщений: 194
27.08.2023, 14:18  [ТС]
Все-таки никак не пойму, как тут можно LocalStorage заюзать...
Или он не решает мою проблему, или я не до конца понял, как он работает.


Потому объясню задачу получше.
У меня есть массив с данными, в котором 30 объектов(каждый объект - это список свойств с описанием КОНКРЕТНОГО товара, за который отвечает сам объект).
В каждом объекте так же есть значение свойство value со значением 0, т.е. "value: 0" и еще 2 вот такие функции(метода):

Метод 1:
JavaScript
1
2
3
addPlus(id) {
this.value = this.value + 1;
},
Метод 2:
JavaScript
1
2
3
4
5
addMinus(id) { 
if (this.value > 0) {         
this.value = this.value - 1;    
}
},
Таким образом я вызываю для выбранного товара одну из этих функций(методов) и увеличиваю счетчик или уменьшаю счетчик выбранных товаров на 1.

Но значение value в массиве после перезагрузки страницы обнуляется.
Может ли LocalStorage помочь мне решить эту проблему?

Просто я не пойму, как его использовать для реализации моей задачи.





Добавлено через 2 минуты
У меня впечатление, что значение value ИЗНАЧАЛЬНО должно храниться в LocalStorage(а не в моем объекте) и вызовом метода я должен изменять значение value ВНУТРИ LocalStorage.

Но как это сделать и возможно ли?

Может тут лучше подойдет Pinia? Но будет ли он сохранять данные после перезагрузки страницы?
0
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,444
Записей в блоге: 2
01.09.2023, 15:50
Лучший ответ Сообщение было отмечено Константин345 как решение

Решение

Как вариант. (с использованием composition api - если надо иначе полагаю поймете суть)

Создаю функцию storedData.js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import { ref } from "vue";
 
const useStoredData = function (variableName, defaultValue) {
  // пробуем достать из localstorage
  const saved = localStorage.getItem(variableName);
  // если есть, то парсим. и чтоб обеспечить структуру испольузем и объект по умолчанию
  // если нет, то по умолчанию
  const value = ref(
    saved ? { ...defaultValue, ...JSON.parse(saved) } : defaultValue
  );
  // функция сохранения в localStorage
  const save = (newValue) => {
    value.value = { ...value.value, ...newValue };
    localStorage.setItem(variableName, JSON.stringify(newValue));
  };
 
  return {
    value,
    save
  };
};
export default useStoredData;
Далее пример использования
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<template>
  <input v-model="myObject.value.value.name" /><br />
  <input v-model="myObject.value.value.age" /><br />
  <button @click="save">Save</button>
  <pre>
    {{ myObject.value.value }}
  </pre>
</template>
 
<script setup>
import useStoredData from "./stotredData";
 
const myObject = useStoredData("myVariableName", { name: "ss", age: 10 });
 
const save = () => {
  myObject.save(myObject.value.value);
};
</script>
PS Я не гуру vue - возможно кто то поправит этот вариант
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.09.2023, 15:50
Помогаю со студенческими работами здесь

Как запомнить значение выпадающего списка после обновления страницы?
Пробую делать сортировки, тип сортировки выбираю через выпадающий список &lt;p&gt; Сортировка: &lt;form...

Как запустить контент скрипт после ajax обновления страницы
У меня есть расширение, нажимающее на кнопки, и есть сайт, в котором страницы обновляются, как я понял, через ajax (url меняется, меняется...

Как отправить форму в php, чтобы она не отправлялась повторно, после обновления страницы?
Как отправить форму в php, чтобы она не отправлялась повторно, после обновления страницы? а именно редирект на ту же страницу ...

Как сделать, чтобы после клика по кнопке, появилась другая кнопка(без обновления страницы)
Всем привет! Как сделать, чтобы после клика по кнопке, появилось текстовое поле и другая кнопка. И чтобы без обновлений.

SetInterval() после обновления страницы
Здравствуйте! setInterval() после обновления страницы останавливается и запускается заново или запускает дубли? Нужно ли после...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru