ある要素をクリックしたとき、クリックイベントは親に伝播していく。そのため親にもクリック時の挙動を設定しているとそれが発火してしまう。 なのでイベント伝播を子要素でとどめる設定が必要。
Vue.jsの場合はイベント修飾子を使う。
https://jp.vuejs.org/v2/guide/events.html#%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E4%BF%AE%E9%A3%BE%E5%AD%90
下記例ではchildで伝播を止めているため、リンクをクリックした時のイベントがparentに伝わらない。
<div class="parent" @click="someMethod()" v-if="visibleMenu">
<div class="child" v-if="visibleMenu" @click.stop>
<nuxt-link :to="{ path: '/foo' }" >foo</nuxt-link>
javascriptで書く場合は下記のいずれかの方法で制御する。