vue.js - <router-link> Vue Router @click 事件

标签 vue.js vue-router

我尝试在 <router-link> 上使用点击事件.它有效,但每次单击链接时都会重新加载页面。我想避免它,但我不知道该怎么做。

我知道 <router-link>不接受简单的@click 事件。我在一些论坛上看到 @click.I native 可以工作,但据我们所知,它已被弃用。

所以我想知道除了将路由器链接包装在一个 div 中并将监听器放在该 div 之外是否有任何解决方案。

我之所以要这样做是因为我想在单击链接时动态地绑定(bind)一个类。我创建了一个在点击时触发的下拉菜单。但是当我点击该下拉菜单中的链接时,菜单仍然打开。因此,我想有一个额外的@click 事件来动态地将一个类(显示:无)绑定(bind)到下拉菜单。问题是下拉列表中的项目被迭代,将参数发送到 Vuex Mutation,因此我不能使用常规标签,用 span 或 div 包装路由器链接也没有给我想要的效果。

谢谢!

问候,

T.

最佳答案

我已经设法使用 div 包装器并更改我的 css 来解决问题(这会阻止代码正常工作)

 <div class="dropdown">
        <a class="dropbtn" @click="dropClick"><i class="ri ico ri-draft-line"></i> Docs <i class="ri ico ri-arrow-drop-down-line ri-1x"></i></a>
        <div class="dropdown-content" :class="{ 'dropdown-content-display': clicked }">
          <div class="wrapper" v-for="route in $store.state.menuItems" :key="route.name" @click="dropClick">
            <router-link :to="{ name: 'docs', params: { title: route.name } }"> <i :class="'ico ri ' + route.icon"></i> {{ route.name }}
            </router-link>
          </div>
        </div>
      </div>

关于vue.js - <router-link> Vue Router @click 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65162488/

相关文章:

vue.js - Vuejs 计算属性和 jquery ui 可排序问题

vue.js - 访问任何子路线时如何在父路线链接上获得事件类(class)?

vue.js - 在自定义组件上使用 v-model

vue.js - .vue 文件的脚本部分由 Vetur 格式化但没有使用 Prettier

vue-router - 单击链接会更改 url 但不会更改页面上的内容/数据

javascript - Vue 路由参数在 @change 事件发生变化但组件不受影响

javascript - vuejs无法在导航栏中获取vuex值

javascript - 导航时出现 VUE 错误 : Discarded invalid param(s) "recordIds", "datasources"

vue.js - Vue 组件检查 vuex 存储状态属性是否已填充数据

vue.js - Atom 的 VueJS 设置