Получение определенного родительского компонента по имени в Vuejs

62
4

Мне нужен надежный способ вызвать родительский компонент n родителей в vuejs. Если вы ищете что-то более близкое ("element") в jQuery, где вам не нужно указывать, сколько у вас родителей или детей, вы указываете только имя компонента, который вам нужен, и он будет искать его для вас рекурсивно он находит правильный.

Мне просто интересно, есть ли что-то вроде этого: $ find (имя-компонента); или это. $ ближайший (имя-компонента);

Я читал где-то люди используют $ ref, но я не думаю, что правильный для этого варианта использования или нет?

Вместо этого. $ Parent. $ Parent, который, очевидно, не очень надежный, когда вы не знаете, сколько у него родителей.

Спасибо,

спросил(а) 2021-01-28T00:32:47+03:00 3 месяца, 1 неделя назад
1
Решение
62

Вы можете использовать цикл while, итерации по всем родительским компонентам.

getComponent(componentName) {
let component = null
let parent = this.$parent
while (parent && !component) {
if (parent.$options.name === componentName) {
component = parent
}
parent = parent.$parent
}
return component
},

пример:

mounted() {
console.log(this.getComponent('App'))
},

ответил(а) 2021-01-28T00:32:47+03:00 3 месяца, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема