vuejs2 - 使用 Nuxt.js 将事件传递给父组件
问题描述
我有一个简单的标题组件,其中包含一个可点击的汉堡包,我想将汉堡包分成一个单独的组件,但是当我这样做时点击事件不再起作用,我想我需要某种布尔道具但找不到解释或我正在寻找错误的东西。
这作为单个组件工作
/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/汉堡包.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>
解决方案
将事件从子组件发送到父组件,并通过子组件中的道具关闭菜单。很容易实现,跟着
https://vuejs.org/v2/guide/components.html#Listening-to-Child-Components-Events
Nuxt 与事件无关。
编辑 我为你创建了一个例子
https://codesandbox.io/embed/codesandbox-nuxt-v5l5m?fontsize=14
推荐阅读
- java - 屏幕截图在 for 循环的下一次迭代中被覆盖,或者可能在第二次迭代中没有截图
- c - 如何使用 C 预处理器找到库的整个路径?
- android - 嵌套的 Fragment Back Press Child 内部的 Parent 导致问题
- amazon-web-services - Fargate 指标数据丢失
- amazon-redshift - 使用 CASE WHEN REDSHIFT 时添加 1 天
- ios - iOS 应用程序将无法在 Xcode 11.6 的 iPhone iOS 13.6 上运行
- twitter - 接收短信面临的问题
- tensorflow - 用于 android 和指令的 tensorflow lite 模型
- primefaces - 如何使用 Spring Security 为所有页面和会话保持 primefaces 主题
- php - 如何将mysql数据显示为表头,然后将与该结果相关的所有数据显示为html中的表数据