PHVNTOW
@PHVNTOW

Как вызвать функцию из разных компонентов vue?

Мне нужно вызвать функцию из компонента в папке pages, а сам компонент лежит в папке components.
Вопрос, как мне из разных компонентов и из разных папок вызвать функцию?
Пробовал $emit, но он походу работает только с соседними компонентами.

P.S. я не могу менять структуру приложения.
  • Вопрос задан
  • 239 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fragster
@Fragster
помогло? отметь решением!
Если не хочется выносить в стор и при этом это что-то типа подсвечивания корзины после добавления в неё товара или открытия диалога с менеджером во всплывашке, которая на самом деле в лэйауте на отдельной кнопке, то можно использовать https://github.com/developit/mitt или https://github.com/scottcorgan/tiny-emitter,
Ответ написан
Комментировать
@7rows
Frontend Разработчик / Vue / JS / TS / CSS
На самом деле, emit можно и выше прокидывать, однако, в каждом компоненте тебе придется использовать его
Если есть стор, то можно воспользоваться им, но хранить функции в сторе - это не очень, он для другого был придуман

Попробуй паттерн Шины сообщений (Event.Bus) - в одном месте ты подписываешься на тот же самый эмит, а в другом ты вызываешь его, не важно, какая вложенность будет, у тебя напрямую будут ходить эмиты

Можно реализовать плагин, который будет хранить в себе все подписки , тем самым ты сделаешь глобальную шину
https://v3.ru.vuejs.org/ru/guide/migration/events-...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы