Можно ли хранить экземпляры пользовательского класса в Vuex / (данные Vue)?

Согласно документации vue, нельзя хранить ничего, кроме простых объектов. (https://ru.vuejs.org/v2/api/#data ). Я всегда использую vuex как контейнер DI, я вижу это с этой точки зрения. Он держит vue подальше от бизнес-логики моего приложения и позволяет описывать бизнес-правила только с использованием JS без каких-либо зависимостей. Но такой подход ломает инструмент vue dev, и по какой-то причине не все тесты проходят. Есть ли способ обойти это ограничение? Например, экземпляры класса могут быть созданы в геттерах, а не в мутациях. Но у меня это не работает, потому что у некоторых конструкторов моих классов есть побочные эффекты (это не лучшая практика, но то, что у меня есть).


person Lapkovsky Kirill    schedule 25.05.2020    source источник
comment
Ваше описание настолько абстрактно, что я не могу понять всего. Не могли бы вы привести несколько примеров?   -  person Run    schedule 15.09.2020


Ответы (1)


Вы можете абсолютно хранить экземпляры классов в состоянии хранилища.

Обычно я храню массивы моделей, что действительно полезно для хранения логики в одном месте.

Что-то вроде:

Api.load('/api/users').then(res => commit('users', res.data.map(User.create)))
person Dave Stewart    schedule 12.11.2020