На самом деле, emit можно и выше прокидывать, однако, в каждом компоненте тебе придется использовать его
Если есть стор, то можно воспользоваться им, но хранить функции в сторе - это не очень, он для другого был придуман
Попробуй паттерн Шины сообщений (Event.Bus) - в одном месте ты подписываешься на тот же самый эмит, а в другом ты вызываешь его, не важно, какая вложенность будет, у тебя напрямую будут ходить эмиты
Можно реализовать плагин, который будет хранить в себе все подписки , тем самым ты сделаешь глобальную шину
https://v3.ru.vuejs.org/ru/guide/migration/events-...