@c8x8

Хранить во vuex массив объектов или объект с объектами?

Пишу большое приложение на vue 3 + vuex.
Во vuex хранится массив объектов (карточек заказов например). У каждой карточки есть уникальный id.
Эти объекты могут добавляться, удаляться и изменяться.
В компоненте важен порядок карточек, поэтому данные изначально хранятся как массив.

Отсюда вопрос как это правильно организовать?

У меня 2 варианта:

1. Оставить все как есть:
При добавлении пушить новый объект в массив. При удалении соответственно удалять. А при изменении находить нужный по id и перезаписывать его.
На выходе сортировать массив, прокидывать в компонент.

2. Создать объект с данными формата ключ (id) -> вложенный объект с данными.
Для сортировки создать дополнительный массив id и прокинуть его в компонент, а там брать нужные данные по id или просто собирать массив в computed.

Что будет правильнее и быстрее? Если данные постоянно меняются (раз в несколько секунд и чаще).
Плюс если использовать объект, то как тогда удалять из него элементы?
  • Вопрос задан
  • 209 просмотров
Решения вопроса 1
SeaInside
@SeaInside
15 лет пилю все эти штуки
Вот видите - если "оставить как есть", то у вас не возникает вопросов, как с этим работать, а вторая идея - вызывает.

Риторический вопрос - как с учётом этого факта будет "правильно"?
Нериторический вопрос - а вы чего боитесь в первом варианте и как эту проблему должен решить второй?

Объект с ключами в виде ID для такого толка коллекций иметь удобно, но это не должно быть основным путём хранения данных, если вам важен порядок элементов. Сделайте геттер, который будет брать исходный массив и собирать из него объект в нужном виде.

Кстати, если используете Vue3 - у вас нет ни одной причины не перейти на Pinia вместо Vuex, это более удобный инструмент абсолютно во всех отношениях. :)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы