Привет!
Имеется web-приложение, главная страница которого состоит из нескольких, переключаемых вкладками, больших компонентов, которые, в свою очередь имеют еще некоторое количество дочерних модулей.
В хранилище
vuex есть глобальная переменная
(String) activeTab
, которая отвечает за содержимое, отображаемое на главной странице приложения.
В каких компонентах используется переменная?
Переменная используется в 2 компонентах:
- 1. Home.vue (основной компонент главной страницы)
- 2. HomeForms.vue (компонент, в котором содержится форма с вкладками - является дочерним компонентом к Home.vue)
Таким образом достаем перменную из хранилищаimport {mapGetters} from "vuex";
....
computed: {
...mapGetters({
.....
activeTab: "getActiveTab",
.....
})
},
Используется она только в условиях
v-show=""
и
:class=""
в обоих компонентах.
Проблема
Проблема заключается в том, что если обращаться к переменной только в одном из компонентов (например, в HomeForms.vue назначать класс активной вкладке) - переключение вкладок происходит мгновенно, но, если использовать ее еще в одном компоненте (например ,в HomeForms.vue просто добавить тег div
с условием v-if="activeTab == '...'",
, то переключение осуществляется 2-3 секунды.
Что я пытался сделать?
Пробовал в компоненте Home.vue получать переменную, а в HomeForms.vue обращаться к ней через $parent.activeTab
- не помогло.
* в компоненте HomeForms.vue при переключении вкладок также изменяется значение этой переменной:
this.$store.commit('setActiveTab', key);
Как можно оптимизировать такое использование глобальной переменной, чтобы переключение вкладок происходило мгновенно?