Vue <router-link>标签绑定@click点击事件失败

在 Vue.js 应用中使用 Vue Router 的时候,`router-link` 组件默认会阻止点击事件。若需绑定点击事件,需在 `@click` 后添加 `native` 修饰符。例如:`<router-link to=/home @click.native=changeRoute('home')>首页</router-link>`。这样可以确保点击事件正常触发。

失败原因

router-link标签本身会阻止click事件,使用常规的@click绑定点击事件自然会失败。


解决方案

@click之后添加native修饰符。

<router-link to="/home" @click.native="changeRoute('home')">
    首页
</router-link>
<template> <header class="app-header"> <div class="header-content"> <div class="logo"> <img src="@/assets/logo.png" alt="Logo"> <h1>学习路径规划系统</h1> </div> <nav class="main-nav"> <router-link to="/dashboard">仪表盘</router-link> <router-link to="/learning-path">学习路径</router-link> <router-link to="/learning-resources">学习资源</router-link> <router-link to="/analysis">学习分析</router-link> <router-link to="/reports">报告生成</router-link> <!-- 动态显示用户相关链接 --> <div v-if="isLoggedIn" class="user-menu"> <router-link to="/profile">个人资料</router-link> <button @click="$emit('logout')">退出登录</button> </div> <div v-else class="auth-links"> <router-link to="/login">登录</router-link> <router-link to="/register">注册</router-link> </div> </nav> </div> </header> </template> <script> import { mapState, mapGetters } from 'vuex'; export default { name: 'Header', computed: { ...mapState(['user']), ...mapGetters(['isLoggedIn']) } }; </script> <style scoped> .app-header { background-color: #2c3e50; color: white; padding: 10px 20px; } .header-content { max-width: 1200px; margin: 0 auto; display: flex; justify-content: space-between; align-items: center; } .logo { display: flex; align-items: center; color: white; text-decoration: none; } .logo img { height: 40px; margin-right: 15px; } .main-nav { display: flex; gap: 20px; align-items: center; } .main-nav a { color: white; text-decoration: none; font-weight: bold; transition: opacity 0.3s ease; } .main-nav a:hover { opacity: 0.8; } .user-menu { display: flex; gap: 15px; align-items: center; } .user-menu a { color: white; text-decoration: none; font-weight: bold; transition: opacity 0.3s ease; } .user-menu button { background: none; border: none; color: white; font-weight: bold; cursor: pointer; font-size: 16px; } .user-menu button:hover { opacity: 0.8; } </style>将上面代码转换为<script setup>格式
05-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值