Как передать реквизит от родителя внуку в VUE - PullRequest
0 голосов
/ 28 сентября 2018

Вместо того, чтобы жестко закодировать реквизиты, я хотел бы просто передать произвольное количество и типы реквизита от родителя к внуку.

Я попробовал это:

<FileListRenderless v-bind="$props" v-on="$listeners">
<!-- <FileListRenderless :attachments="attachments" :isEditMode="isEditMode" :type="type"> -->

, который работает хорошо, но явсе равно придется определять их в объекте props в дочернем компоненте.Как также абстрагироваться от назначения объекту реквизита дочернего компонента?

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Если вы не хотите явно определять реквизиты в дочернем компоненте, то вам просто нужно передать реквизиты как объект, подобный:

<FileListRenderless :my-props="$props" v-on="$listeners">

Это обходит встроенные проверки реквизитов. Вы можете сделатьТо же самое с вашими слушателями, просто вручную прикрепляя их к компонентному монтированию.Тем не менее, я бы порекомендовал вам пересмотреть свой дизайн, если вам нужно это сделать.Если у вас есть огромный спектр возможных реквизитов, вы можете найти способ абстрагировать определенную логику, создать фабричные компоненты, использовать директивы или использовать миксины.В наборе инструментов Vue много инструментов.

0 голосов
/ 28 сентября 2018

Без лишнего контекста, я бы рекомендовал передать все реквизиты с v-bind="$props".как вы уже сделали.

Вы также можете использовать bus или vuex, но это создаст переменные глобального уровня, что не всегда идеально.

...