Зарегистрироваться для нескольких событий от разных дочерних компонентов через один родительский базовый компонент в React? - PullRequest
0 голосов
/ 22 апреля 2019

Я хочу сделать один базовый класс в React, который обрабатывает подписки на события Socket.io.Я имею в виду - я могу зарегистрировать несколько компонентов, которые наследуют базовый класс с помощью одной команды.Например, что-то вроде этого:

export default class Base extends React.Component {
  constructor() {

  }
  subscribe(eventName, cb) {
    Socket.on(eventName, cb)
    // track the event list somewhere
    // code ...
  }
  componentWillUnMount() {
    // unsubscribe to all of the events that were registered
    // using this components
    // code ...
  }
}

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

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

Я попытался связать this в конструкторе, например:

  constructor() {
    this.subscribe = this.subscribe.bind(this)
  }

Это позволяет компоненту отключиться, ноне подписки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...