Приведу пример. Например у тебя есть родитель-компонент: Page.vue в нем есть кнопка которая открывает модальное окно Modal.vue.
Page.vue:
<button @click="isShow = !isShow">Open Modal</ button>
<Modal v-if="isShow" @closeModal="isShow = !isShow"/>
При клике мы открываем модальное окошечко.
Тем временем внутри самого компонента нам надо уметь закрывать его, в таком случае пишем в дочернем компоненте Modal.vue:
...
<button @click="$emit('closeModal')">Close Modal</button>
...
Для передачи данных используйте $emit следующим образом:
$emit('closeModal', {
data: 'value',
data2: 'value2'
})
Подробнее можно почитать тут:
https://medium.com/@modex13/vue-js-2-передача-данн...
Тут более простенько написано:
https://monsterlessons.com/project/lessons/peredae...
Также можно воспользоваться следующим (но помните что это крайний случай, который не рекомендован к использованию):
https://ru.vuejs.org/v2/guide/components-edge-case...