Я хочу сделать один базовый класс в 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)
}
Это позволяет компоненту отключиться, ноне подписки.