Vue 3 состав API, как получить родительское свойство контекста в функции setup ()? - PullRequest
3 голосов
/ 18 февраля 2020

У меня проблема с Vue 3 (alpha 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]] ясно показывает родительское свойство .

При ведении журнала родителя хотя он просто выводит неопределенное:

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, но из чего Я читал о них, и, например, из экспериментов с прокси, возвращаемыми реагирующим (). Я должен иметь возможность получить доступ к свойству, как обычно, с помощью объекта. Любые идеи о том, что я делаю неправильно?

Я создал codesandbox , чтобы воспроизвести проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...