Ngxs - хорошо ли добавлять в магазин такие объекты, как Sets? - PullRequest
1 голос
/ 23 апреля 2020

Можно ли хранить более новые Javascript объекты, такие как Set или Map, в состоянии? Может ли это вызвать странные эффекты с изменчивостью?

export interface StateModel {
    aSet: Set<number>;
}

1 Ответ

2 голосов
/ 25 апреля 2020

Нет, это не нормально, и да, может, в зависимости от того, как вы его используете.

Выдержка из официальных документов :

Избегайте сохранения экземпляров на основе классов в вашем штате

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

Это также относится к использованию коллекций данных, таких как Set , Map , WeakMap , WeakSet , et c. Поскольку они не поддаются десериализации и не могут быть легко представлены для нормализации.

...