Angular NGXS TypeError: не может зависнуть

Angular NGXS TypeError: не может зависнуть

Код, отправляющий действие

  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
    }
})

Детали реализации отсутствуют. Вам нужно предоставить пример, в котором воспроизводится ошибка. Попробуйте stackblitz.

Victor Luchian 05.04.2021 13:49

@VictorLuchian Я не могу использовать stackblitz для демонстрации проекта firebase. Думаю, здесь понятна каждая деталь реализации

Badgy 05.04.2021 16:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
26
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Сделайте static readonly type = '[firebase.User | null] Add'; нестатичным, например:

static type = '[firebase.User | null] Add';

Поскольку мы не можем видеть весь ваш код (например, вы публикуете какой-то конструктор без какого-либо класса), и вы не позволяете нам (см. Комментарии), это мое лучшее предположение после сообщения об ошибке, жалующегося на какое-то свойство только для чтения.

В противном случае в firebase.User могут быть некоторые свойства только для чтения, как насчет этого?

Вы вставляете в магазин что-то, что NGXS пытается заморозить. «Замораживание» подразумевает перезапись, которая недопустима для свойств только для чтения. Теперь вам нужно найти то, что там только для чтения, на случай, если два моих совета выше не помогли.

Ответ принят как подходящий

По сути, это обмануть.

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

Спасибо, это помогло, я был слишком сосредоточен на своем деле, поэтому мне почему-то удалось подумать, что эта ветка не относится ко мне при первом исследовании, спасибо за помощь и снова указали мне в правильном направлении.

Badgy 05.04.2021 19:40

Другие вопросы по теме