使用Nuxt.js将事件传递给父组件

时间:2019-09-14 01:58:04

标签: vuejs2 click vue-component nuxt.js vue-props

我有一个简单的标头组件,其中包含一个可单击的汉堡包,我想将汉堡包分成一个单独的组件,但是单击事件不再起作用,我认为我需要某种布尔型道具,但是可以找不到解释,或者我在找错东西。

这是一个单独的组件

/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>


1 个答案:

答案 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

相关问题