Лучший способ удалить компонент обратного потока?

#javascript #backdraftjs

Вопрос:

У меня есть компонент backdraftjs, который отображает сообщение. Когда вы нажимаете на нее, я хочу, чтобы она исчезла. Как мне сделать так, чтобы это прошло?

 class QuickMessage extends Component {
  bdElements() {
    return e.div(
      {className: 'quick_message', bdAdvise: {click: 'dismissMe'}}, 
      this.kwargs.message
    );
  }

  dismissMe() {
    // what should go here ? should it just remove the dom element or
    // will that leave code hanging around?
  }
}
 

метод, который отображает ошибку внутри #someDomId:

 reportError = (errmsg) => render(QuickMessage, {message: errmsg}, "someDomId");
 

Ответ №1:

Тебе следует позвонить destroy :

 dismissMe() {
    this.destroy();
}
 

В документации говорится:

Уничтожьте все ресурсы и ссылки, принадлежащие экземпляру, тем самым сделав экземпляр легко доступным для сбора мусора. В частности, выполняется следующее:

  • Отменяет отображение экземпляра (при отображении) и уничтожает все ресурсы (узлы DOM, соединения с событиями и т.д.), Полученные во время отображения компонента.
  • Уничтожает всех наблюдателей в свойствах экземпляра.
  • Уничтожает все обработчики событий экземпляра.
  • Уничтожает все уничтожаемые экземпляры, опубликованные для владения.
  • Удаляет этот файл.кварги.

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