Size: a a a

Vue.js Russian Developers Community

2021 January 13

DS

Denis Strokov in Vue.js Russian Developers Community
Сергей Миртов
Я так понимаю речь про ивент бас?) или прокинуть пропсом объект по ссылке, способного эмитить?
про event bus
источник

DS

Denis Strokov in Vue.js Russian Developers Community
можно и через пропс прокинуть сам метод)
источник

R

RusaXXX in Vue.js Russian Developers Community
Denis Strokov
в дочернем пишем this.$emit('myEvent', eventProps) в родителе пишем <component @v-on:myEvent="handlerFn" />
вы понимаете что при таком подходе, как бы моодуль перестает быть модулем, потому что я выношу реализацию метода в родитель
источник

DS

Denis Strokov in Vue.js Russian Developers Community
RusaXXX
вы понимаете что при таком подходе, как бы моодуль перестает быть модулем, потому что я выношу реализацию метода в родитель
Ну вы и так жестко связали модуль с родителем нарушив инкапсуляцию
источник

R

RusaXXX in Vue.js Russian Developers Community
Denis Strokov
Ну вы и так жестко связали модуль с родителем нарушив инкапсуляцию
с этим согласен
источник

V💊

Vladimir 💉 💊 Voytenk... in Vue.js Russian Developers Community
RusaXXX
Как в динамических асинхронных компонентах дожидаться полного монтирования компонента?

button @click="setComponent"
component :is="componentName"

components: {
    'MyComponent' => import('./MyComponent')
}

setComponent(){
  this.componentName = 'MyComponent'
  // и вот тут я хочу вызвать метод компонета через ref, но компонент с тому времени не загрузился или не смонтировался
  // помогает только this.nextTick
  this.$refs.MyComponent.method()
}
тебе выше конечно уже сказали, о еще раз повторю - это ОЧЕНЬ плохое поведение, антипаттерн и вообще)
источник

СМ

Сергей Миртов... in Vue.js Russian Developers Community
RusaXXX
вы понимаете что при таком подходе, как бы моодуль перестает быть модулем, потому что я выношу реализацию метода в родитель
нормальный поток событий - от ребенка к родителю. нормальный поток данных - от родителя к ребенку. В случае если нужно прокинуть событие между компонентами, которые не ребенок родитель можно использовать ивентбас. Но сама нужда такой штуковины - не совсем корректна
источник

СМ

Сергей Миртов... in Vue.js Russian Developers Community
Можно в нужном ребенке подписаться на изменение переменной в сторе. Потом в родителе поменять эту переменную, но это не лучше ивентбаса
источник

R

RusaXXX in Vue.js Russian Developers Community
Сергей Миртов
нормальный поток событий - от ребенка к родителю. нормальный поток данных - от родителя к ребенку. В случае если нужно прокинуть событие между компонентами, которые не ребенок родитель можно использовать ивентбас. Но сама нужда такой штуковины - не совсем корректна
То есть в моем случае заменить все прямые вызовы на евент бас?
источник

СМ

Сергей Миртов... in Vue.js Russian Developers Community
А что делает метод в ребенке?
источник

V💊

Vladimir 💉 💊 Voytenk... in Vue.js Russian Developers Community
RusaXXX
То есть в моем случае заменить все прямые вызовы на евент бас?
ивент бас примерно так же плох как и вызов метода родителя
источник

R

RusaXXX in Vue.js Russian Developers Community
Vladimir 💉 💊 Voytenko
ивент бас примерно так же плох как и вызов метода родителя
))))
источник

СМ

Сергей Миртов... in Vue.js Russian Developers Community
Разве нельзя обойтись без метода в ребенке? реактивного изменения пропсов хватает в 90 процентов случаев
источник

СМ

Сергей Миртов... in Vue.js Russian Developers Community
что делает метод ребенка?
источник

V💊

Vladimir 💉 💊 Voytenk... in Vue.js Russian Developers Community
RusaXXX
Как в динамических асинхронных компонентах дожидаться полного монтирования компонента?

button @click="setComponent"
component :is="componentName"

components: {
    'MyComponent' => import('./MyComponent')
}

setComponent(){
  this.componentName = 'MyComponent'
  // и вот тут я хочу вызвать метод компонета через ref, но компонент с тому времени не загрузился или не смонтировался
  // помогает только this.nextTick
  this.$refs.MyComponent.method()
}
а хотя подожди, тут же ты дергаешь ребенка, а не родителя. тогда в принципе всё не так плохо. так делать можно, но не часто желательно
источник

R

RusaXXX in Vue.js Russian Developers Community
Сергей Миртов
что делает метод ребенка?
да по разному, так в двух словах и не опишешь
источник

R

RusaXXX in Vue.js Russian Developers Community
RusaXXX
да по разному, так в двух словах и не опишешь
метод может вообще не менять данные ребенка, то есть метод никак не связан с даннми ребенка но по логике это метод относится именно к этому модулю
источник

R

RusaXXX in Vue.js Russian Developers Community
RusaXXX
да по разному, так в двух словах и не опишешь
То есть если я удалю этот компонент, то и метод должен исчезнуть
источник

R

RusaXXX in Vue.js Russian Developers Community
если вынести метод куд-то то при удалении  компонента, нужно будет держать в голове что вот этот метод тоже нужно удалить
источник

R

RusaXXX in Vue.js Russian Developers Community
Vladimir 💉 💊 Voytenko
а хотя подожди, тут же ты дергаешь ребенка, а не родителя. тогда в принципе всё не так плохо. так делать можно, но не часто желательно
именно, но типа прямой вызов это не гуд тоже, как я понял
источник