как заголовок, как я могу это сделать
из официальной документации просто сообщите нам, что $ delete может использовать аргумент 'object' и 'key'
но я хочу удалить компонент как таковой
this.$delete(this)
как заголовок, как я могу это сделать
из официальной документации просто сообщите нам, что $ delete может использовать аргумент 'object' и 'key'
но я хочу удалить компонент как таковой
this.$delete(this)
Нет, вы не сможете удалить компонент напрямую. Родительский компонент должен будет использовать v-if
для удаления дочернего компонента из DOM.
Ссылка: https://vuejs.org/v2/api/#v-if
Цитата из документов:
Условно визуализируйте элемент на основе правдивости значения выражения. Элемент и содержащиеся в нем директивы / компоненты уничтожаются и восстанавливаются во время переключений.
Если дочерний компонент создается как часть некоторого объекта данных в родительском элементе, вам нужно будет отправить событие родительскому объекту через $emit
, изменить (или удалить) данные, и дочерний компонент исчезнет сам по себе. Недавно по этому поводу возник еще один вопрос: Удалить дочерний компонент Vue
Я не смог найти инструкций по полному удалению экземпляра Vue, поэтому вот что у меня получилось:
module.exports = {
...
methods: {
close () {
// destroy the vue listeners, etc
this.$destroy();
// remove the element from the DOM
this.$el.parentNode.removeChild(this.$el);
}
}
};
Vue 3 в основном то же самое, но вы должны использовать root
из аргумента контекста:
export default {
setup(props, { root }){
const close = () => {
root.$destroy();
root.$el.parentNode.removeChild(root.$el);
};
return { close };
}
}
И в Vue 2, и в Vue 3 вы можете использовать созданный вами экземпляр:
const instance = new Vue({ ... });
...
instance.$destroy();
instance.$el.parentNode.removeChild(instance.$el);
Вы можете использовать метод beforeDestroy для компонента и заставить его удалить себя из DOM.
beforeDestroy () {
this.$root.$el.parentNode.removeChild(this.$root.$el)
},
beforeDestroy () { this.$el.parentNode.removeChild(this.$el) },
Не могли бы вы дать мне подсказку, почему вы использовали $root
вместо кода, предложенного @bendytree?
- person Merc; 10.04.2020
$root
, если это единственный компонент на странице, но если это вложенный компонент, вы не захотите использовать $root
. Более важный бит - использование beforeDestroy
, который срабатывает непосредственно перед естественным уничтожением компонента.
- person HastingsDirect; 15.04.2020