#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
будет создан новый экземпляр вашего компонента.