Пожалуйста подскажите, почему не срабатывает реактивность между не связанными компонентами:
ModalsController.js:
import { ref } from 'vue';
export const useModal = (init = false)=>{
const isShowModal = ref(init);
const openModal = () => {
isShowModal.value = true;
};
const closeModal = () => {
isShowModal.value = false;
};
return {
isShowModal, openModal, closeModal
}
}
Header.vue:
<template>
<button @click="openModal">OpenModal</button>
{{isShowModal}}
<button @click="closeModal">CloseModal</button>
</template>
<script setup>
import {useModal} from "./ModalsController.js";
const { isShowModal,openModal,closeModal } = useModal();
</script>
Modal.vue:
<template>
<div v-if="isShowModal"> Modal window </div>
</template>
<script setup>
import {useModal} from "./ModalsController.js";
const {isShowModal} = useModal();
</script>
Причем все работает если я создаю вместо функции простую переменную вот так:
ModalsController.js:
import { ref } from 'vue';
export const isShowModal = ref(false);
и соответственно меняю ее в хедере. Но это очень не удобно, т.к. есть еще много функций (переключение и.т.п.)
Заранее всем спасибо за помощь, вот тут я выложила в Playground для теста:
Не рабочий вариант
Рабочий вариант