Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.06.2021, 19:14
Кандидат Javascript-наук
Отправить личное сообщение для fori Посмотреть профиль Найти все сообщения от fori
 
Регистрация: 27.01.2021
Сообщений: 117

Одностраничная шина событий на Vue 3
Здравствуйте, в Vue 2 я создавал шину событий для конкретной страницы и всех ёё компонентов используя к примеру
//main.js
global.context = new Object();
global.context.app = Vue;

Тогда я присваевал контекст страницы глобальному обэкту global.context к примеру
created(){
global.context.authorization = this;
}

и к примеру в компоненте любой вложености или на странице вызывал
global.context.authorization.$emit(
          "authorizationMessage",
          this.t("Password fields didn't match")
        );

Также я и принимал события
global.context.authorization.$on("authorizationMessage", (msg) => {
      alert(msg);
    });

Но пытаясь повторить подход на Vue 3 я получаю ошибку
Uncaught (in promise) TypeError: global.context.authorization.$on is not a function
    at Proxy.created (Messenger.vue?1b1a:25)
    at callWithErrorHandling (runtime-core.esm-bundler.js?5c40:154)
    at callWithAsyncErrorHandling (runtime-core.esm-bundler.js?5c40:163)
    at callHookWithMixinAndExtends (runtime-core.esm-bundler.js?5c40:6032)
    at callSyncHook (runtime-core.esm-bundler.js?5c40:6018)
    at applyOptions (runtime-core.esm-bundler.js?5c40:5956)
    at finishComponentSetup (runtime-core.esm-bundler.js?5c40:6636)
    at setupStatefulComponent (runtime-core.esm-bundler.js?5c40:6567)
    at setupComponent (runtime-core.esm-bundler.js?5c40:6503)
    at mountComponent (runtime-core.esm-bundler.js?5c40:4206)

Насколько я понимаю фишка с контекстами не будет работать если она обернута в прокси, как я могу улучшить подход с локальными шинами событий... могу ли я както присвоить в global.context.authorization = this; не от прокси а от VueComponent?

Последний раз редактировалось fori, 20.06.2021 в 19:20.
Ответить с цитированием
  #2 (permalink)  
Старый 20.06.2021, 22:41
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,584

Без вариантов, в Vue 3 переработана в сторону упрощения система событий.
Либо писать самому, либо использовать сторонние решения.

P.S. Вообще у меня от vue 3 горит не слабо. Кучу фич выкинули, кучу вещей серьёзно усложнили и "запачкали".
Некоторые вещи таки улучшили, но баланс абсолютно не в пользу улучшений, ИМХО. Vue 2 был интуитивен. Первое решение проблемы приходящее в голову - в 99% случаев было верным. В vue 3 надо держать в голове кучу нерелевантного дерьма, меньше чем в реакте, но той чистоты и лёгкости уже нет.
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что такое defineComponent (vue cli) fori Javascript под браузер 1 22.03.2021 20:46
Локальное подключение компонентов vue? Lodas Библиотеки/Тулкиты/Фреймворки 0 11.04.2020 22:42
Vue + Axios + PHP + MySQL Volun Библиотеки/Тулкиты/Фреймворки 13 03.04.2019 18:50
UI верстальщик. VUE + Semantic UI shelomar Работа 0 12.01.2018 15:40
Скопировать обработчики событий с одного элемента на другой. Jurasmi Events/DOM/Window 3 10.11.2010 19:03