Новая подписка RxJS создается при замене горячего модуля страницы - PullRequest
0 голосов
/ 11 мая 2019

Я импортирую обновленную тему из внутреннего пакета NPM в мое приложение Next.js.

Внутренний пакет NPM

import { Subject } from 'rxjs';

export const errorSubject = new Subject<{}>();

Приложение Next.js

import { errorSubject } from '@my-package'

// Inside component's render
render() {
  errorSubject.subscribe({
    next: v => console.log(v),
  });
}

Каждый раз, когда происходит горячая перезагрузка Next.js, создается новая подписка. Если я обновлю страницы, останется только 1 подписка.

Это вызывает проблемы, потому что выполняется несколько обратных вызовов.


https://www.youtube.com/watch?v=cqy3RPQocRw

1 Ответ

2 голосов
/ 11 мая 2019

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

private _subscription;


render() {
  this._subscription = errorSubject.subscribe({
    next: v => console.log(v),
  });
}

componentWillUnmount() {
  this._subscription.unsubscribe();
}
...