我有一个简单的标头组件,其中包含一个可单击的汉堡包,我想将汉堡包分成一个单独的组件,但是单击事件不再起作用,我认为我需要某种布尔型道具,但是可以找不到解释,或者我在找错东西。
这是一个单独的组件
/components/Header.vue
<template>
<div class="--row header__wrapper" :class="{active: menuClose}">
<button class="hamburger" :class="{active: menuClose}" @click="menuClose=!menuClose">
<span></span>
<span></span>
<span></span>
</button>
</div>
</template>
<script>
export default {
data() {
return {
menuClose: false,
};
}
};
</script>
下面的内容不起作用,因为当我将其分成两个部分时,它会丢失点击事件。
/components/Header.vue
<template>
<div class="--row header__wrapper" :class="{active: menuClose}">
<Hamburger/>
</div>
</template>
<script>
import Hamburger from "~/components/Hamburger.vue";
export default {
components: {
Hamburger
}
}
};
</script>
/components/Hamburger.vue
<template>
<button class="hamburger" :class="{active: menuClose}" @click="menuClose=!menuClose">
<span></span>
<span></span>
<span></span>
</button>
</template>
<script>
export default {
data() {
return {
menuClose: false
};
}
};
</script>
答案 0 :(得分:1)
将事件从“子级”发送到父级组件,然后通过子级中的prop使menuClose。 实施起来非常容易,遵循
https://vuejs.org/v2/guide/components.html#Listening-to-Child-Components-Events
Nuxt与事件无关。
编辑 我为您创建了一个示例
https://codesandbox.io/embed/codesandbox-nuxt-v5l5m?fontsize=14