У меня проблема с Vue 3 (альфа 4):
Внутри функции setup()
я пытаюсь прочитать родительский компонент. Согласно документации по https://vue-composition-api-rfc.netlify.com/api.html#setup он должен предоставлять родительский элемент через аргумент context
, либо как свойство context.attrs, либо непосредственно как родительский (см. бит SetupContext
в разделе «ввод текста»). Я не считаю, что документация очень ясна относительно того, должен ли доступ к parent
осуществляться напрямую из SetupContext
или через SetupContext.attrs
, поэтому я пробовал оба способа, но безрезультатно.
Вот моя проблема, я могу получить доступ к SetupContext
и SetupContext.attrs
(которые являются прокси) просто отлично при их регистрации. SetupContext.attrs
предоставляет обычные свойства прокси ([[Handler]]
, [[Target]]
и [[IsRevoked]]
), а при проверке [[Target]]
ясно показывает родительское свойство а>.
Однако при регистрации родителя он просто выводит undefined:
export default {
setup(props, context) {
console.log(context);
// Output: {attrs: Proxy, slots: Proxy, emit: ƒ}
console.log(context.attrs);
// Output: Proxy {vnode: {…}, parent: {…}, appContext: {…}, type: {…}, root: {…}, …}
console.log(context.attrs.parent);
// Output: undefined
}
};
Распространение контекста дает тот же результат:
export default {
setup(props, { attrs, parent }) {
console.log(attrs);
// Output: Proxy {vnode: {…}, parent: {…}, appContext: {…}, type: {…}, root: {…}, …}
console.log(attrs.parent);
// Output: undefined
console.log(parent);
// Output: undefined
}
};
Я немного новичок в прокси в JavaScript, но из того, что я читал о них, и, например, из экспериментов с прокси, возвращаемыми с помощью reactive (). Я должен просто иметь доступ к свойству, как обычно с объектом. Есть идеи о том, что я делаю неправильно?
Я создал codeandbox воспроизвести проблему
parent
вattrs
, ноattrs.parent
не определено, то это потому, чтоattrs
заполнено после того, как вы его зарегистрируете. Вы можете попробовать поместить свой код вonMounted
ловушку. - person Paleo   schedule 18.02.2020