Надежно ли использовать атрибут _self из Vue vm? - PullRequest
0 голосов
/ 30 августа 2018

Мне нужно передать основной компонент более глубокому ребенку. В настоящее время я делаю на ребенка this.$parent.$parent, но это не надежно для меня, потому что этот же ребенок может быть на третьем + глубинном уровне.

Моя идея - передать ссылку на основной компонент между дочерними элементами, например:

<v-some-child :main-component="_self"></v-some-child>

Таким образом, я могу использовать экземпляр основного компонента там, где я считаю нужным, передав данные _self или this.mainComponent более внутреннему дочернему элементу.

Мое сомнение:

  1. _self атрибут надежен для указания на экземпляр компонента Vue? Похоже, префикс _ относится к внутренним атрибутам, а $ для общедоступных (надежных). Если это правда, что я могу использовать?
  2. Есть какой-то лучший способ сделать то, что я хочу?

Спасибо!


Редактировать 1: в качестве немедленного более надежного обходного пути, я использую data() { self: this }, затем я использую :main-component="self".

1 Ответ

0 голосов
/ 30 августа 2018

Мне неясно, где _self устанавливается в вашем случае. Обычно _self = this; - это подход, используемый разработчиками для передачи текущего экземпляра Vue через замыкание в функцию обратного вызова. Я бы не стал доверять _self, если бы точно не знал, где он будет установлен.

Ваш edit1 должен работать абсолютно. Пока data(){ self: this } происходит в основном экземпляре Vue и в компонентах, которые вы используете self при установке свойства с помощью :, как :main-component="self", это должно работать нормально, если объединены основные свойства данных компонента Vue. во все компоненты, используемые этим экземпляром vue.
Откровенно говоря, это своего рода подход. Как упомянул @ raina77ow, возможно, имеет смысл взглянуть на VueX или EventBus, но подход, который вы предлагаете в Edit1, должен быть надежным способом обхода основного экземпляра Vue.

Кстати, мне интересно, может ли root или main быть лучшим именем, чем я. Учитывая, что это «я» экземпляра Vue основного или корневого уровня, а не «я» потомка, передающего значение.

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