router-view

router-view中嵌套一个按钮,给里面的点赞按钮添加了stop事件,还是会触发router-view
这么解决呢
给这一整块信息包裹了一个router-view

img

如果您在 router-view 中嵌套了一个按钮,并为按钮添加了 stop 事件,但仍然无法阻止 router-view 的触发,可能是因为 router-view 的点击事件优先级较高,导致无法被阻止。

为了解决这个问题,您可以尝试在按钮的 click 事件中手动阻止事件的传播,以避免触发 router-view。具体来说,您可以在按钮的 click 事件中使用 event.stopPropagation() 方法来阻止事件的传播。例如:

html
Copy
<template>
  <div>
    <router-view></router-view>
    <div>
      <!-- 其他内容 -->
      <button @click.stop="handleClick">点赞</button>
      <!-- 其他内容 -->
    </div>
  </div>
</template>

<script>
export default {
  methods: {
    handleClick(event) {
      // 阻止事件的传播
      event.stopPropagation()
      // 处理点赞逻辑
    }
  }
}
</script>

在上述代码中,我们为按钮的 click 事件添加了 stop 修饰符,并在 handleClick 方法中使用 event.stopPropagation() 方法阻止事件的传播。这样,即使用户点击了按钮,也不会触发 router-view 的跳转。

需要注意的是,使用 stop 修饰符仅能阻止事件的传播,而无法阻止事件的默认行为。如果您需要同时阻止事件的传播和默认行为,可以使用 prevent 修饰符,或者在事件处理函数中使用 event.preventDefault() 方法来阻止默认行为。

  • 这篇文章:Router-view 也许有你想要的答案,你可以看看
  • 以下回答由chatgpt基于相关博客总结生成:

    答案:

    我在使用Vue的router时遇到了一个问题:页面中有一个router-view,同时还有一个按钮,但是我给这个按钮添加了stop事件后,仍然会触发router-view,我希望在这种情况下,如何才能解决这个问题?

    为了解决这个问题,可以在按钮上加上@click.stop即可阻止事件冒泡。具体代码如下:


    如果按钮在router-view中,那么可以通过添加一个处理函数来处理事件,避免冒泡。具体代码如下:


    按钮区域

    另外,需要注意的是,给整个信息区域包裹一个router-view是没有必要的,因为整个页面的布局应该是根据实际情况来设计的,而不是为了解决一个事件冒泡问题而进行无脑的组件包裹。