#vue.js #vue-component #vuejs3 #vue-slot
Вопрос:
Описание проблемы
Я пытаюсь получить доступ к дочерним компонентам Vue, переданным в слот.
Я делаю это со следующим подходом: this.$slots.default()
Я получаю компоненты и даже могу обращаться к методам компонента и вызывать их, используя следующий подход: this.$slots.default()[1].type.methods.methodName
Проблема в том, что в дочернем компоненте this
ключевое слово теперь изменилось на другой тип, где вы можете получить доступ только к методам, определенным в этом компоненте, и к ограниченным переменным. И поэтому, например, вы не можете получить доступ к этому.$refs (который мне действительно нужен) или к этому.$el или к чему-либо еще, кроме определенных методов и некоторых переменных.
Что я пробовал
Я попытался назначить this.$refs переменной в функции onmount, а затем попытаться получить к ней доступ при вызове метода из родительского компонента, но вы не можете получить доступ к этой переменной.
В Vue2 у вас есть полный доступ к дочернему компоненту, и это будет работать.
Есть ли способ исправить это в Vue3?
Комментарии:
1. Пожалуйста, покажите весь пример и объясните, чего вы хотите достичь. Это похоже на проблему XY. «методы доступа и вызова компонента с использованием следующего подхода» — это выглядит как плохой дизайн и никогда не должно делаться при нормальных обстоятельствах.
2. Я не думаю, что это возможно в Vue3, поскольку VNodes не зависят от контекста. Видишь github.com/vuejs/vue-next/issues/2 .