Как-то так:
<template>
<preloader @show="show = $event"></preloader>
<header v-if="!show"></header>
</template>
export default {
data() {
return {
show: true
}
}
}
В прелоадере:
<template>
<button @click="handler"></button>
</template>
export default {
data() {
return {
show: false
}
},
methods: {
handler() {
this.show = !this.show
this.$emit('show', this.show)
}
}
}
Хотя тут на лицо дублирование, поэтому правильнее, чтобы переменная, которая отвечает за отображение была не внутри компонента, а снаружи.