Код, отправляющий действие
constructor(auth: AuthService, private store: Store) {
this.userAuth = auth.signedIn.subscribe({ next: (user) => {
this.user = user;
this.store.dispatch(new SetUser(user));
}});
}
Определение действий
import firebase from 'firebase/app';
export class SetUser {
static readonly type = '[firebase.User | null] Add';
constructor(public payload: firebase.User | null) {}
}
И моя реализация магазина:
@Action(SetUser)
add({ patchState }: StateContext<UserStateModel>, { payload }: SetUser): void {
patchState({
user: payload
});
}
@State<UserStateModel>({
name: 'user',
defaults: {
user: null
}
})
@VictorLuchian Я не могу использовать stackblitz для демонстрации проекта firebase. Думаю, здесь понятна каждая деталь реализации
Отвечает ли это на ваш вопрос? Невозможно исправить состояние с обновлением в магазине с помощью NGXS. Я все время вижу ошибку типа: не могу заморозить



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Сделайте static readonly type = '[firebase.User | null] Add'; нестатичным, например:
static type = '[firebase.User | null] Add';
Поскольку мы не можем видеть весь ваш код (например, вы публикуете какой-то конструктор без какого-либо класса), и вы не позволяете нам (см. Комментарии), это мое лучшее предположение после сообщения об ошибке, жалующегося на какое-то свойство только для чтения.
В противном случае в firebase.User могут быть некоторые свойства только для чтения, как насчет этого?
Вы вставляете в магазин что-то, что NGXS пытается заморозить. «Замораживание» подразумевает перезапись, которая недопустима для свойств только для чтения. Теперь вам нужно найти то, что там только для чтения, на случай, если два моих совета выше не помогли.
По сути, это обмануть.
Проблема в том, что вы пытаетесь сохранить что-то в состоянии, которое невозможно заморозить. Просто клонируйте его или сохраните только те части, которые вам нужны. Смотрите мой ответ здесь.
Спасибо, это помогло, я был слишком сосредоточен на своем деле, поэтому мне почему-то удалось подумать, что эта ветка не относится ко мне при первом исследовании, спасибо за помощь и снова указали мне в правильном направлении.
Детали реализации отсутствуют. Вам нужно предоставить пример, в котором воспроизводится ошибка. Попробуйте stackblitz.